如何在 python 代码中获取 apache 下经过身份验证的用户名?
How to get the authenticated user name under apache while in python code?
基本上我只需要从 apache2 获取经过身份验证的用户名(对于基本/类似的身份验证方案)但是在 python.
在 php 中,这很简单,看起来像这样:
$username = $_SERVER['PHP_AUTH_USER'];
$password = $_SERVER['PHP_AUTH_PW'];`
站点启用配置中配置的相关部分如下所示:
#Provides Authentication for the admin pages
<Location /admin>
AuthType Basic
AuthName "example.com"
AuthUserFile /data/passwd_admin
Require valid-user
</Location>`
但是,我似乎找不到任何方法从 python 中检索此信息。
from flask import request,Flask
import json
app = Flask(__name__)
@app.route("/")
def index():
auth = request.authorization
if not auth:return "No Auth!"
return auth.username+":"+auth.password
app.run(debug=True)
经过大量搜索,似乎没有一种简单、干净的方法可以在不使用复杂的外部库的情况下直接从 python 中获取这些 headers。
但是,假设 python 在 CGI-type 上下文中是 运行, Apache 会将此信息填充到环境变量中供您使用从中拉出,效果非常好,而且非常简单:
import os
print os.environ["REMOTE_USER"]
可以轻松获得经过身份验证的用户,这不仅适用于基本身份验证,而且几乎所有身份验证方案都使用我的 Apache。
基本上我只需要从 apache2 获取经过身份验证的用户名(对于基本/类似的身份验证方案)但是在 python.
在 php 中,这很简单,看起来像这样:
$username = $_SERVER['PHP_AUTH_USER'];
$password = $_SERVER['PHP_AUTH_PW'];`
站点启用配置中配置的相关部分如下所示:
#Provides Authentication for the admin pages
<Location /admin>
AuthType Basic
AuthName "example.com"
AuthUserFile /data/passwd_admin
Require valid-user
</Location>`
但是,我似乎找不到任何方法从 python 中检索此信息。
from flask import request,Flask
import json
app = Flask(__name__)
@app.route("/")
def index():
auth = request.authorization
if not auth:return "No Auth!"
return auth.username+":"+auth.password
app.run(debug=True)
经过大量搜索,似乎没有一种简单、干净的方法可以在不使用复杂的外部库的情况下直接从 python 中获取这些 headers。
但是,假设 python 在 CGI-type 上下文中是 运行, Apache 会将此信息填充到环境变量中供您使用从中拉出,效果非常好,而且非常简单:
import os
print os.environ["REMOTE_USER"]
可以轻松获得经过身份验证的用户,这不仅适用于基本身份验证,而且几乎所有身份验证方案都使用我的 Apache。