Назад | Перейти на главную страницу

Авторизация в mod_wsgi

У меня следующая установка,

WSGIScriptAlias /i C:/Project/Scripts/hello.wsgi
WSGIScriptAlias /hello C:/Project/Scripts/hello.wsgi

<Directory "C:/Project/Scripts">
 Order deny,allow
 Allow from all
</Directory>

<Location /i>
 AuthType Basic
 AuthName "Top Secret"
 AuthBasicProvider wsgi
 WSGIAuthUserScript C:/Project/Scripts/authn.wsgi
 WSGIAccessScript C:/Project/Scripts/auths.wsgi
 Require valid-user
</Location>

<Location /hello>
 AuthType Basic
 AuthName "Top Secret"
 AuthBasicProvider wsgi
 WSGIAuthUserScript C:/Project/Scripts/authn.wsgi
 Require valid-user
</Location>

authn

def check_password(environ, user, password):
 if user == 'admin' or user == 'spy':
  if password == 'secret':
   return True
  return False
 return None

авторизации

def allow_access(environ, host):
 if environ.get('REMOTE_USER'): 
  if environ['REMOTE_USER'] == 'admin':
   return True
 return False

Запросы для _http: // localhost / hello выводят запрос на вход, как и ожидалось ... он отлично работает!

Запросы для _http: // localhost / i не выводят логин и возвращают 403 Forbidden

Я что-то упускаю?! разве WSGIAccessScript не должен выполнять авторизацию ?!

Спасибо :\

РЕДАКТИРОВАТЬ

я получаю сообщение об ошибке "REMOTE_USER".

Я полагаю, что сценарий аутентификации не запущен: S

РЕДАКТИРОВАТЬ

Я тестировал это, чтобы выполнить авторизацию нескольких репозиториев Subversion на основе информации db,

есть способ сделать это возвращение 403 запрещено, если аутентифицировано и не авторизовано ?!

я знаю, что это возможно с mod_python, но я не хотел смешивать mod_python с mod_wsgi.

Нет, WSGIAccessScript не предназначен для авторизации пользователей, это исключительно для управления доступом на основе хоста, независимо от того, был ли пользователь аутентифицирован или авторизован. Авторизация пользователя осуществляется с помощью директивы WSGIAuthGroupScript. Видеть:

http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms#Apache_Group_Authorisation