У меня следующая установка,
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