在python代码中如何在apache下获取经过身份验证的用户名?

时间:2015-05-05 18:39:18

标签: python apache apache2 cgi

基本上我只需要从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中检索此信息的任何方法。

2 个答案:

答案 0 :(得分:0)

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/

答案 1 :(得分:0)

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

但是,假设python在CGI类型的上下文中运行, Apache会将这些信息塞进环境变量中供您使用,这非常有效,而且非常简单:

import os
print os.environ["REMOTE_USER"]

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