ada*_*dam 6 authentication cherrypy apache-2.2
我需要对我的应用程序的一部分使用 apache 基本身份验证。我想从 apache 获取经过身份验证的用户名,但似乎找不到访问它的位置。我可以在 apache 日志中看到用户名,所以我知道它在某处。用户通过 apache 身份验证后,请求将通过代理发送到cherrypy 服务器。
这是我的 apache vhost 配置部分:
<Location /ical>
AuthType Basic
AuthBasicProvider ldap
AuthName "Example Calendar Login"
AuthLDAPUrl "ldaps://ldap.example.net/ou=People,dc=example,dc=net?uid"
Require valid-user
ProxyPass http://localhost:8082/
ProxyPassReverse http://localhost:8082/
SetEnv proxy-nokeepalive 1
</Location>
Run Code Online (Sandbox Code Playgroud)
用户身份验证和代理位工作正常。请求通过身份验证并发送到cherrypy后,这是我在cherrypy中的标头:
(Pdb) pp cherrypy.request.headers
{'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Accept-Encoding': 'gzip,deflate',
'Accept-Language': 'en-us,en;q=0.5',
'Authorization': 'Basic xxxxxxxxxxx',
'Connection': 'close',
'Host': 'sub.example.net',
'If-None-Match': 'e5b0879ce68fcce5b960ce4281c8d706',
'Remote-Addr': '10.132.32.86',
'User-Agent': 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10) Gecko/20100915 Ubuntu/10.04 (lucid) Firefox/3.6.10',
'X-Forwarded-For': 'xx.xx.xx.xx, xx.xx.xx.xx',
'X-Forwarded-Host': 'sub.example.net, sub.example.net',
'X-Forwarded-Server': 'sub.example.net, sub'}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我从 apache 基本身份验证访问用户名吗?
小智 7
我添加了一个标头来传递基于 apache 的经过身份验证的用户。
RewriteEngine On
RewriteCond %{REMOTE_USER} ^(.*)$
RewriteRule ^(.*)$ - [E=R_U:%1]
RequestHeader set X-Remote-User %{R_U}e
Run Code Online (Sandbox Code Playgroud)
您的cherrypy应用程序正在接收基本身份验证信息,因为我们在标题中看到了这一点:
'Authorization': 'Basic xxxxxxxxxxxxxxxxxxxxxx==',
Run Code Online (Sandbox Code Playgroud)
你只需要:
由于这不是 stackoverflow ;)
,我不会费心提供上述的确切 python 实现,但它应该让你开始。关于基本访问身份验证的维基百科条目信息量很大,并包含各种语言的代码片段。
(只是关于这个问题的安全说明:如果您在生成问题中包含的标题时使用了真实的用户名/密码,请注意您已经在上面的“授权”标题的文本中向全世界透露了它,因为任何人想要可以轻松解码它!)
编辑:我有 'x'-ed 授权字符串。
归档时间: |
|
查看次数: |
9373 次 |
最近记录: |