我正在尝试使用用 Pylons 编写的 Intranet Web 应用程序进行单点登录 (SSO),我想使用 repoze.what 进行授权。我已经用 mod_sspi 配置了 Apache,它正确地验证了用户并设置了 REMOTE_USER 环境变量。但是,我不知道如何说服 repoze.who 用户确实是经过身份验证的。
我尝试创建一个如下所示的标识符:
class NtlmIdentifier(object):
def identify(self, environ):
if environ['AUTH_TYPE'] == 'NTLM':
return { 'repoze.who.userid': environ['REMOTE_USER'] }
return None
def remember(self, environ, identity):
pass
def forget(self, environ, identity):
pass
然后像这样注册中间件:
return setup_auth(app, groups, permissions, identifiers=identifiers, authenticators=[], challengers=[])
但似乎我的标识符的identify
方法从未被框架调用过。
如何将 SPNEGO/SSPI 与 repoze.who 和 repoze.what 集成?