diff --git a/example/idp/idp.py b/example/idp/idp.py index a44a125..af720bd 100755 --- a/example/idp/idp.py +++ b/example/idp/idp.py @@ -2,6 +2,8 @@ import re import base64 +import logging + #from cgi import parse_qs from urlparse import parse_qs from saml2 import server, root_logger @@ -9,6 +11,8 @@ from saml2 import BINDING_HTTP_REDIRECT, BINDING_HTTP_POST from saml2 import time_util from Cookie import SimpleCookie +logger = logging.getLogger("saml2.IDP") + def _expiration(timeout, format=None): if timeout == "now": return time_util.instant(format) @@ -63,7 +67,7 @@ FORM_SPEC = """
""" -def sso(environ, start_response, user, logger): +def sso(environ, start_response, user): """ Supposted to return a POST """ #edict = dict_to_table(environ) #if logger: logger.info("Environ keys: %s" % environ.keys()) @@ -107,7 +111,7 @@ def sso(environ, start_response, user, logger): "SAML 2.0 POST", "", FORM_SPEC % (req_info["consumer_url"], - base64.b64encode("".join(authn_resp)), "/"), + base64.b64encode(str(authn_resp)), "/"), """""", @@ -116,7 +120,7 @@ def sso(environ, start_response, user, logger): start_response('200 OK', [('Content-Type', 'text/html')]) return response -def whoami(environ, start_response, user, logger): +def whoami(environ, start_response, user): start_response('200 OK', [('Content-Type', 'text/html')]) identity = environ["repoze.who.identity"].copy() for prop in ["login", "password"]: @@ -127,19 +131,19 @@ def whoami(environ, start_response, user, logger): response = dict_to_table(identity) return response[:] -def not_found(environ, start_response, logger): +def not_found(environ, start_response): """Called if no URL matches.""" start_response('404 NOT FOUND', [('Content-Type', 'text/plain')]) return ['Not Found'] -def not_authn(environ, start_response, logger): +def not_authn(environ, start_response): if "QUERY_STRING" in environ: query = parse_qs(environ["QUERY_STRING"]) - if logger: logger.info("query: %s" % query) + logger.info("query: %s" % query) start_response('401 Unauthorized', [('Content-Type', 'text/plain')]) return ['Unknown user'] -def slo(environ, start_response, user, logger): +def slo(environ, start_response, user): """ Expects a HTTP-redirect logout request """ query = None @@ -231,9 +235,8 @@ def application(environ, start_response): user = environ.get("repoze.who.identity", "") path = environ.get('PATH_INFO', '').lstrip('/') - logger = environ.get('repoze.who.logger') - if logger: logger.info(" PATH: %s" % path) - if logger: logger.info("Cookie: %s" % (kaka,)) + logger.info(" PATH: %s" % path) + logger.info("Cookie: %s" % (kaka,)) for regex, callback in URLS: if user: match = re.search(regex, path) @@ -242,12 +245,12 @@ def application(environ, start_response): environ['myapp.url_args'] = match.groups()[0] except IndexError: environ['myapp.url_args'] = path - if logger: logger.info("callback: %s" % (callback,)) - return callback(environ, start_response, user, logger) + logger.info("callback: %s" % (callback,)) + return callback(environ, start_response, user) else: - if logger: logger.info("-- No USER --") - return not_authn(environ, start_response, logger) - return not_found(environ, start_response, logger) + logger.info("-- No USER --") + return not_authn(environ, start_response) + return not_found(environ, start_response) # ---------------------------------------------------------------------------- diff --git a/example/sp/sp.py b/example/sp/sp.py index 95bc523..5f8147b 100755 --- a/example/sp/sp.py +++ b/example/sp/sp.py @@ -5,6 +5,8 @@ import re from cgi import parse_qs from saml2 import BINDING_HTTP_REDIRECT +logger = logging.getLogger("") + # ----------------------------------------------------------------------------- def dict_to_table(ava, lev=0, width=1): txt = ['\n' % width] @@ -48,7 +50,7 @@ def dict_to_table(ava, lev=0, width=1): #noinspection PyUnusedLocal -def whoami(environ, start_response, user, logger): +def whoami(environ, start_response, user): identity = environ["repoze.who.identity"]["user"] if not identity: return not_authn(environ, start_response) @@ -70,14 +72,13 @@ def not_authn(environ, start_response): return ['Unknown user'] #noinspection PyUnusedLocal -def slo(environ, start_response, user, logger): +def slo(environ, start_response, user): # so here I might get either a LogoutResponse or a LogoutRequest client = environ['repoze.who.plugins']["saml2auth"] sids = None if "QUERY_STRING" in environ: query = parse_qs(environ["QUERY_STRING"]) - if logger: - logger.info("query: %s" % query) + logger.info("query: %s" % query) try: (sids, code, head, message) = client.saml_client.logout_response( query["SAMLResponse"][0], @@ -92,13 +93,13 @@ def slo(environ, start_response, user, logger): return ["Successfull Logout"] #noinspection PyUnusedLocal -def logout(environ, start_response, user, logger): +def logout(environ, start_response, user): client = environ['repoze.who.plugins']["saml2auth"] subject_id = environ["repoze.who.identity"]['repoze.who.userid'] logger.info("[logout] subject_id: '%s'" % (subject_id,)) target = "/done" # What if more than one - tmp = client.saml_client.global_logout(subject_id, return_to=target) + tmp = client.saml_client.global_logout(subject_id) logger.info("[logout] global_logout > %s" % (tmp,)) (session_id, code, header, result) = tmp @@ -114,7 +115,7 @@ def logout(environ, start_response, user, logger): return ["Failed to logout from identity services"] #noinspection PyUnusedLocal -def done(environ, start_response, user, logger): +def done(environ, start_response, user): # remove cookie and stored info logger.info("[done] environ: %s" % environ) subject_id = environ["repoze.who.identity"]['repoze.who.userid'] @@ -157,10 +158,9 @@ def application(environ, start_response): user = environ.get("repoze.who.identity", "") path = environ.get('PATH_INFO', '').lstrip('/') - logger = environ.get('repoze.who.logger') logger.info(" PATH: %s" % path) logger.info("logger name: %s" % logger.name) - logger.info(logging.Logger.manager.loggerDict) + #logger.info(logging.Logger.manager.loggerDict) for regex, callback in urls: if user: match = re.search(regex, path) @@ -169,7 +169,7 @@ def application(environ, start_response): environ['myapp.url_args'] = match.groups()[0] except IndexError: environ['myapp.url_args'] = path - return callback(environ, start_response, user, logger) + return callback(environ, start_response, user) else: return not_authn(environ, start_response) return not_found(environ, start_response)