如何在 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)

见:http://flask.pocoo.org/snippets/8/

经过大量搜索,似乎没有一种简单、干净的方法可以在不使用复杂的外部库的情况下直接从 python 中获取这些 headers。

但是,假设 python 在 CGI-type 上下文中是 运行, Apache 会将此信息填充到环境变量中供您使用从中拉出,效果非常好,而且非常简单:

import os
print os.environ["REMOTE_USER"]

可以轻松获得经过身份验证的用户,这不仅适用于基本身份验证,而且几乎所有身份验证方案都使用我的 Apache。