Ñò
ô³Kc @ s d Z d d k l Z d d k Td e f d YZ d e f d YZ e Z d g Z d Z d e
j o# d d
k Z e i d e i
n d
S( s
Basic HTTP/1.0 Authentication
This module implements ``Basic`` authentication as described in
HTTP/1.0 specification [1]_ . Do not use this module unless you
are using SSL or need to work with very out-dated clients, instead
use ``digest`` authentication.
>>> from paste.wsgilib import dump_environ
>>> from paste.httpserver import serve
>>> # from paste.auth.basic import AuthBasicHandler
>>> realm = 'Test Realm'
>>> def authfunc(environ, username, password):
... return username == password
>>> serve(AuthBasicHandler(dump_environ, realm, authfunc))
serving on...
.. [1] http://www.w3.org/Protocols/HTTP/1.0/draft-ietf-http-spec.html#BasicAA
i˙˙˙˙( t HTTPUnauthorized( t *t AuthBasicAuthenticatorc B s5 e Z d Z d Z d Z d Z d Z e Z RS( s5
implements ``Basic`` authentication details
t basicc C s | | _ | | _ d S( N( t realmt authfunc( t selfR R ( ( s4 /usr/lib/python2.6/site-packages/paste/auth/basic.pyt __init__ s c C s# t i d | i } t d | S( Ns Basic realm="%s"t headers( t WWW_AUTHENTICATEt tuplesR R ( R t head( ( s4 /usr/lib/python2.6/site-packages/paste/auth/basic.pyt build_authentication$ s c C sĤ t | } | p | i S| i d d \ } } d | i j o | i S| i i d } | i d d \ } } | i | | | o | S| i S( Nt i R t base64t :( t
AUTHORIZATIONR t splitt lowert stript decodeR ( R t environt
authorizationt authmetht autht usernamet password( ( s4 /usr/lib/python2.6/site-packages/paste/auth/basic.pyt authenticate( s ( t __name__t
__module__t __doc__t typeR R R t __call__( ( ( s4 /usr/lib/python2.6/site-packages/paste/auth/basic.pyR s
t AuthBasicHandlerc B s e Z d Z d Z d Z RS( s/
HTTP/1.0 ``Basic`` authentication middleware
Parameters:
``application``
The application object is called only upon successful
authentication, and can assume ``environ['REMOTE_USER']``
is set. If the ``REMOTE_USER`` is already set, this
middleware is simply pass-through.
``realm``
This is a identifier for the authority that is requesting
authorization. It is shown to the user and should be unique
within the domain it is being used.
``authfunc``
This is a mandatory user-defined function which takes a
``environ``, ``username`` and ``password`` for its first
three arguments. It should return ``True`` if the user is
authenticated.
c C s | | _ t | | | _ d S( N( t applicationR R ( R R" R R ( ( s4 /usr/lib/python2.6/site-packages/paste/auth/basic.pyR R s c C sz t | } | pW | i | } t | t o$ t i | d t i | | qj | i | | Sn | i | | S( NR ( t REMOTE_USERR t
isinstancet strt AUTH_TYPEt updatet wsgi_applicationR" ( R R t start_responseR t result( ( s4 /usr/lib/python2.6/site-packages/paste/auth/basic.pyR V s ( R R R R R ( ( ( s4 /usr/lib/python2.6/site-packages/paste/auth/basic.pyR! 7 s c K s8 d d k l } d d k } | | } t | | | S( sÒ
Grant access via basic authentication
Config looks like this::
[filter:grant]
use = egg:Paste#auth_basic
realm=myrealm
authfunc=somepackage.somemodule:somefunction
i˙˙˙˙( t eval_importN( t paste.util.import_stringR+ t typesR! ( t appt global_confR R t kwR+ R- ( ( s4 /usr/lib/python2.6/site-packages/paste/auth/basic.pyt
make_basice s t __main__Nt optionflags( R t paste.httpexceptionsR t paste.httpheaderst objectR R! t
middlewaret __all__R1 R t doctestt testmodt ELLIPSIS( ( ( s4 /usr/lib/python2.6/site-packages/paste/auth/basic.pyt