2015-05-05 2 views
0

В основном мне просто нужно получить аутентифицированное имя пользователя из apache2 (для базовых/аналогичных схем аутентификации), но в то время как в python.Как получить аутентифицированное имя пользователя под apache в коде 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.

+1

это просто базовая аутентификация .htaccess? как пользователь аутентифицируется? –

+0

@ Joran Beasley Да, хотя я не определяю его в .htaccess, он находится в конфигурации сайта с поддержкой конкретных сайтов Apache. Я отредактирую свой пост с соответствующим разделом. – 1n5aN1aC

ответ

0

После долгих поисков, там не появляется, чтобы быть легким, чистым способом непосредственно получить эти заголовки из внутри питона без использования сложных внешних библиотек.

Однако предполагая питона работает в контексте с CGI-типа, Apache будет впихнуть эту информацию в переменных окружения для вас, чтобы вытащить из, и это работает прекрасно, и невероятно легко:

import os 
print os.environ["REMOTE_USER"] 

Работает, чтобы легко получить аутентифицированного пользователя, и это работает не только для базового auth, но в значительной степени любая схема аутентификации использовала мой Apache.

+0

Из памяти, которая не будет работать с mod_python. Если он предоставляет значение, тогда что-то еще сломано, так как это не будет выполнено в многопоточной конфигурации. Правильный способ в mod_python - получить доступ к атрибуту 'user' объекта запроса из памяти. BTW, mod_python очень хорош, и вы не должны использовать его для чего-то нового. –

+0

@GrahamDumpleton Спасибо, ты прав. Оказывается, что я думал, что я делаю, я на самом деле не делал. Как моя конфигурация настроена, я рассматриваю ее как скрипт CGI и не использую mod_python. Я не уверен, почему я думал, что использую mod_python, извините. – 1n5aN1aC

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/

Смежные вопросы