将 apache2 摘要身份验证信息传递给由 mod_wsgi 运行的 wsgi 脚本

Posted

技术标签:

【中文标题】将 apache2 摘要身份验证信息传递给由 mod_wsgi 运行的 wsgi 脚本【英文标题】:Passing apache2 digest authentication information to a wsgi script run by mod_wsgi 【发布时间】:2010-09-12 12:24:13 【问题描述】:

我有指令

<VirtualHost *>
    <Location />
        AuthType Digest
        AuthName "global"
        AuthDigestDomain /
        AuthUserFile /root/apache_users
        <Limit GET>
            Require valid-user
        </Limit>
    </Location>
    WSGIScriptAlias / /some/script.wsgi
    WSGIDaemonProcess mywsgi user=someuser group=somegroup processes=2 threads=25
    WSGIProcessGroup mywsgi
    ServerName some.example.org
</VirtualHost>

我想知道 /some/script.wsgi

def application(environ, start_response):
    start_response('200 OK', [
        ('Content-Type', 'text/plain'),
    ])
    return ['Hello']

什么用户登录了。

我该怎么做?

【问题讨论】:

【参考方案1】:

添加WSGIPassAuthorization On:

<VirtualHost *>
    <Location />
        AuthType Digest
        AuthName "global"
        AuthDigestDomain /
        AuthUserFile /root/apache_users
        <Limit GET>
            Require valid-user
        </Limit>
    </Location>
    WSGIPassAuthorization On
    WSGIScriptAlias / /some/script.wsgi
    WSGIDaemonProcess mywsgi user=someuser group=somegroup processes=2 threads=25
    WSGIProcessGroup mywsgi
    ServerName some.example.org
</VirtualHost>

那么就读environ['REMOTE_USER']:

def application(environ, start_response):
    start_response('200 OK', [
        ('Content-Type', 'text/plain'),
    ])
    return ['Hello %s' % environ['REMOTE_USER']]

更多信息请访问mod_wsgi documentation。

【讨论】:

非常非常感谢。【参考方案2】:

有关 Apache/mod_wsgi 和访问、身份验证和授权机制的其他信息可以在以下位置找到:

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

默认情况下不会传递该信息,因为这样做可能会将密码信息泄露给可能不应该获取它的应用程序。

【讨论】:

以上是关于将 apache2 摘要身份验证信息传递给由 mod_wsgi 运行的 wsgi 脚本的主要内容,如果未能解决你的问题,请参考以下文章

将输入传递给由 CreateProcess() 创建的进程

您如何将 JMeter 与摘要式身份验证一起使用?

如何将环境变量传递给由 systemd 启动的服务

Vuetify - 将道具传递给由 router-link 创建的标签

摘要身份验证返回未经授权的

Django-为啥内置身份验证登录功能在成功登录网址后未将有关用户的信息传递给