Changeset 94

Show
Ignore:
Timestamp:
07/10/07 23:39:02
Author:
bbangert
Message:

Adding logging statements to SSO. Also added proper nesting and protection for SSO api.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • AuthKit/branches/0.4/authkit/authenticate/sso/api.py

    r91 r94  
    1212request. 
    1313""" 
     14import logging 
     15 
    1416from elementtree import ElementTree 
    15  
    1617from paste.request import construct_url 
    1718from paste.util.converters import asbool 
     
    2122from authkit.authenticate.multi import MultiHandler, status_checker 
    2223from authkit.authenticate import AuthKitConfigError 
     24from authkit.authorize import NotAuthenticatedError 
     25 
     26log = logging.getLogger(__name__) 
    2327 
    2428class LoginFailure(HTTPForbidden): 
     
    3539        request = WSGIRequest(environ) 
    3640        url = self.redirect_url(environ) 
     41        log.debug("Sending redirect to %s", url) 
    3742        return HTTPSeeOther(url).wsgi_application(environ, start_response) 
    3843 
     
    7277         
    7378        if path in self.dispatch: 
     79            log.debug("Found %s in dispatch path, calling method %s",  
     80                      path, self.dispath[path]) 
    7481            return getattr(self, self.path +  
    7582                           self.dispatch[path])(environ, start_response) 
     
    7885            if path.startswith(route) and 'REMOTE_USER' not in environ \ 
    7986               and 'type=' + self.type in environ['QUERY_STRING']: 
     87                log.debug("Found %s in protection paths. No REMOTE_USER set," 
     88                          " running auth verify.", path) 
    8089                return self.verify(environ, start_response) 
     90            elif path.startswith(route): 
     91                return NotAuthenticatedError()(environ, start_response) 
    8192         
     93        log.debug("Path: %s not in protect list %s.", path, self.protect) 
    8294        return self.app(environ, start_response) 
    8395     
  • AuthKit/branches/0.4/authkit/authenticate/sso/cas.py

    r91 r94  
    1515from authkit.authenticate.sso.api import * 
    1616 
    17 log = logging.getLogger('authkit.authenticate.sso.cas'
     17log = logging.getLogger(__name__
    1818 
    1919class AuthCASHandler(RedirectingAuthHandler): 
     
    6363        req = WSGIRequest(environ) 
    6464        if 'ticket' not in req.GET: 
     65            log.debug("No ticket found in request, unable to verify, returning" 
     66                      "404 Not Found.") 
    6567            return HTTPNotFound().wsgi_application(environ, start_response) 
    6668         
     
    7880        #           it during validation 
    7981        if self._cas2: 
     82            log.debug("Validating using CAS 2.0") 
     83             
    8084            # We use proxyValidate for CAS 2.0 because it will handle both 
    8185            # service and proxy ticket validation 
    8286            requrl = self.authority + "proxyValidate?" + args 
    8387            response = urllib.urlopen(requrl).read() 
     88            log.debug("Raw response of auth verification: \n\t%s", response) 
    8489            tree = ElementTree.fromstring(response) 
    8590            valid = tree[0].tag.endswith('authenticationSuccess') 
    8691            results = {} 
    87             if success: 
     92            if valid: 
     93                log.debug("Successfully authenticated") 
    8894                user_kwargs = {} 
    8995                results['user'] = tree[0][0].text 
     
    103109                         tree[0].attrib['code']) 
    104110        else: 
     111            log.debug("Validating using CAS 1.0") 
    105112            requrl = self.authority + "validate?" + args 
    106113            result = urllib.urlopen(requrl).read().split("\n") 
     114            log.debug("Raw response of auth verification: \n\t%s", result) 
    107115            valid = 'yes' == result[0] 
    108116            results = {} 
     
    114122         
    115123        if not valid: 
     124            log.debug("Invalid response, returning login failure.") 
    116125            return LoginFailure().wsgi_application(environ, start_response) 
    117126        environ['AUTH_TYPE'] = self._authtype 
     
    119128         
    120129        set_user = req.environ.get('paste.auth_tkt.set_user') 
     130        user_data = self._authtype 
    121131        if set_user: 
    122             set_user(results['user']
     132            set_user(results['user'], user_data=user_data
    123133         
    124134        # Add in optional environ data from the auth system 
     
    126136            environ.update(results['extra_environ']) 
    127137         
     138        log.debug("Authentication success, calling app.") 
    128139        return self.app(environ, start_response) 
    129140 
     
    141152        kwargs['protect'] = auth_conf['protect'].split(',') 
    142153     
     154    app = AuthCASMiddleware(app, **kwargs) 
    143155    multi_app, app = find_multi_app(app) 
    144156    multi_app.add_method('cas', AuthCASHandler, **kwargs) 
    145157    multi_app.add_checker('cas', status_checker) 
    146158     
    147     app = AuthCASMiddleware(app, **kwargs) 
    148159    return app