Passing digérer apache2 informations d'authentification à un script wsgi dirigé par mod_wsgi


7

J'ai la directive

<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> 

Je voudrais savoir dans le /some/script.wsgi

def application(environ, start_response): 
    start_response('200 OK', [ 
     ('Content-Type', 'text/plain'), 
    ]) 
    return ['Hello'] 

Qu'est-ce que l'utilisateur est connecté.

Comment faire?

14

ajouter 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> 

Ensuite, il suffit de lire environ['REMOTE_USER']:

def application(environ, start_response): 
    start_response('200 OK', [ 
     ('Content-Type', 'text/plain'), 
    ]) 
    return ['Hello %s' % environ['REMOTE_USER']] 

Plus d'informations sur mod_wsgi documentation.

  0

Beaucoup, beaucoup obligé. 06 juil.. 162016-07-06 16:02:20


2

Informations supplémentaires sur Apache/mod_wsgi et l'accès, l'authentification et les mécanismes d'autorisation se trouve dans:

http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms

Les informations ne sont pas transmises par défaut, car cela pourrait révéler des informations de mot de passe pour les applications qui peut-être ne devrait pas l'avoir.