Передача информации аутентификации дайджеста apache2 в сценарий wsgi, запускаемый mod_wsgi
-
02-07-2019 - |
Вопрос
У меня есть директива
<VirtualHost *>
<Location />
AuthType Digest
AuthName "global"
AuthDigestDomain /
AuthUserFile /root/apache_users
<Limit GET>
Require valid-user
</Limit>
</Location>
WSGIScriptAlias / /some/script.wsgi
WSGIDaemonProcess mywsgi user=someuser group=somegroup processes=2 threads=25
WSGIProcessGroup mywsgi
ServerName some.example.org
</VirtualHost>
Я хотел бы знать в /some/script.wsgi
def application(environ, start_response):
start_response('200 OK', [
('Content-Type', 'text/plain'),
])
return ['Hello']
Какой пользователь вошел в систему.
Как мне это сделать?
Решение
добавлять WSGIPassAuthorization On
:
<VirtualHost *>
<Location />
AuthType Digest
AuthName "global"
AuthDigestDomain /
AuthUserFile /root/apache_users
<Limit GET>
Require valid-user
</Limit>
</Location>
WSGIPassAuthorization On
WSGIScriptAlias / /some/script.wsgi
WSGIDaemonProcess mywsgi user=someuser group=somegroup processes=2 threads=25
WSGIProcessGroup mywsgi
ServerName some.example.org
</VirtualHost>
Тогда просто прочти environ['REMOTE_USER']
:
def application(environ, start_response):
start_response('200 OK', [
('Content-Type', 'text/plain'),
])
return ['Hello %s' % environ['REMOTE_USER']]
Дополнительная информация на документация mod_wsgi.
Другие советы
Дополнительную информацию об Apache/mod_wsgi и механизмах доступа, аутентификации и авторизации можно найти в:
http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms
По умолчанию информация не передается, поскольку это может привести к утечке информации о пароле в приложения, которые, возможно, не должны ее получать.
Не связан с StackOverflow