ó aòNc@s–dZddlmZddlTdefd„ƒYZdefd„ƒYZeZdgZd„Z d e kr’dd l Z e j d e j ƒnd 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ÿÿÿÿ(tHTTPUnauthorized(t*tAuthBasicAuthenticatorcBs5eZdZdZd„Zd„Zd„ZeZRS(s5 implements ``Basic`` authentication details tbasiccCs||_||_dS(N(trealmtauthfunc(tselfRR((sA/opt/alt/python27/lib/python2.7/site-packages/paste/auth/basic.pyt__init__ s cCs#tjd|jƒ}td|ƒS(NsBasic realm="%s"theaders(tWWW_AUTHENTICATEttuplesRR(Rthead((sA/opt/alt/python27/lib/python2.7/site-packages/paste/auth/basic.pytbuild_authentication$scCs t|ƒ}|s|jƒS|jddƒ\}}d|jƒkrP|jƒS|jƒjdƒ}|jddƒ\}}|j|||ƒr–|S|jƒS(Nt iRtbase64t:(t AUTHORIZATIONR tsplittlowertstriptdecodeR(Rtenviront authorizationtauthmethtauthtusernametpassword((sA/opt/alt/python27/lib/python2.7/site-packages/paste/auth/basic.pyt authenticate(s   (t__name__t __module__t__doc__ttypeRR Rt__call__(((sA/opt/alt/python27/lib/python2.7/site-packages/paste/auth/basic.pyRs    tAuthBasicHandlercBs eZdZd„Zd„ZRS(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. cCs||_t||ƒ|_dS(N(t applicationRR(RR"RR((sA/opt/alt/python27/lib/python2.7/site-packages/paste/auth/basic.pyRRs cCsvt|ƒ}|sf|j|ƒ}t|tƒrStj|dƒtj||ƒqf|j||ƒSn|j||ƒS(NR(t REMOTE_USERRt isinstancetstrt AUTH_TYPEtupdatetwsgi_applicationR"(RRtstart_responseRtresult((sA/opt/alt/python27/lib/python2.7/site-packages/paste/auth/basic.pyR Vs (RRRRR (((sA/opt/alt/python27/lib/python2.7/site-packages/paste/auth/basic.pyR!7s cKs8ddlm}ddl}||ƒ}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(tpaste.util.import_stringR+ttypesR!(tappt global_confRRtkwR+R-((sA/opt/alt/python27/lib/python2.7/site-packages/paste/auth/basic.pyt make_basices   t__main__Nt optionflags(Rtpaste.httpexceptionsRtpaste.httpheaderstobjectRR!t middlewaret__all__R1RtdoctestttestmodtELLIPSIS(((sA/opt/alt/python27/lib/python2.7/site-packages/paste/auth/basic.pyts *