mod_wsgi 中的授权

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>

验证

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 存储库进行授权,

有没有办法做到这一点,如果经过身份验证但未经授权,则返回 403 禁止?!

我知道使用 mod_python 可以实现这一点,但是我不想将 mod_python 与 mod_wsgi 混合使用。

答案1

不,WSGIAccessScript 不用于用户授权,它纯粹用于基于主机的访问控制,与用户是否经过身份验证或授权无关。用户授权使用 WSGIAuthGroupScript 指令处理。请参阅:

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

相关内容