【问题标题】:Flask/Python decoding username NTLM or Negotiate Authentication HeaderFlask/Python 解码用户名 NTLM 或协商身份验证标头
【发布时间】:2015-07-14 16:57:37
【问题描述】:
我的 Flask 应用程序托管在我们内部网的 IIS 中。在 Flask 中,我可以获得 www-authenticate 标头,但我需要确定 Windows 用户名。我确实启用了基本身份验证,并且能够通过该方法解析出用户名,但我希望这对用户是透明的。在 IE 中,我将选项设置为自动登录到 Intranet 站点,因此不会提示他们输入用户名和密码。
我能够得到一个可以以 NTLM 或 Negotiate 开头的字符串(取决于 IIS 中的设置)和一个长身份验证字符串。我可以在 python/Flask 中对此进行解码的可靠方法是什么?
【问题讨论】:
标签:
python
authentication
flask
【解决方案1】:
知道了。
class RemoteUserMiddleware(object):
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
user = environ.pop('HTTP_X_PROXY_REMOTE_USER', None)
environ['REMOTE_USER'] = user
return self.app(environ, start_response)
app.wsgi_app = RemoteUserMiddleware(app.wsgi_app)
然后在视图中通过这样做:
username = str(request.environ.get('LOGON_USER'))