X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Fproviders%2Fsaml2idp.py;h=507bba291491f164c0c51e8b449ae47085fdb975;hp=f37474d3849884975d77a374515d3e710cd3f6e6;hb=11242b8a3cab8d1594644cf22285e94639cca158;hpb=1110691b872a704bf02dd29b7c1437cfcdf62109 diff --git a/ipsilon/providers/saml2idp.py b/ipsilon/providers/saml2idp.py index f37474d..507bba2 100755 --- a/ipsilon/providers/saml2idp.py +++ b/ipsilon/providers/saml2idp.py @@ -21,9 +21,9 @@ from ipsilon.providers.common import ProviderBase, ProviderPageBase from ipsilon.providers.common import FACILITY from ipsilon.providers.saml2.auth import AuthenticateRequest from ipsilon.providers.saml2.admin import AdminPage -from ipsilon.providers.saml2.certs import Certificate from ipsilon.providers.saml2.provider import IdentityProvider -from ipsilon.providers.saml2 import metadata +from ipsilon.tools.certs import Certificate +from ipsilon.tools import saml2metadata as metadata from ipsilon.util.user import UserSession from ipsilon.util.plugin import PluginObject import cherrypy @@ -98,10 +98,21 @@ class SSO(ProviderPageBase): self.Continue = Continue(*args, **kwargs) +class Metadata(ProviderPageBase): + def GET(self, *args, **kwargs): + with open(self.cfg.idp_metadata_file) as m: + body = m.read() + cherrypy.response.headers["Content-Type"] = "text/xml" + cherrypy.response.headers["Content-Disposition"] = \ + 'attachment; filename="metadata.xml"' + return body + + class SAML2(ProviderPageBase): def __init__(self, *args, **kwargs): super(SAML2, self).__init__(*args, **kwargs) + self.metadata = Metadata(*args, **kwargs) # Init IDP data try: @@ -177,6 +188,13 @@ Provides SAML 2.0 authentication infrastructure. """ 'example.com' ] } + if cherrypy.config.get('debug', False): + import logging + import sys + logger = logging.getLogger('lasso') + lh = logging.StreamHandler(sys.stderr) + logger.addHandler(lh) + logger.setLevel(logging.DEBUG) @property def allow_self_registration(self): @@ -250,11 +268,9 @@ class Installer(object): meta = metadata.Metadata(metadata.IDP_ROLE) meta.set_entity_id(url + '/metadata') meta.add_certs(cert, cert) - meta.add_service(metadata.SSO_SERVICE, - lasso.SAML2_METADATA_BINDING_POST, + meta.add_service(metadata.SAML2_SERVICE_MAP['sso-post'], url + 'SSO/POST') - meta.add_service(metadata.SSO_SERVICE, - lasso.SAML2_METADATA_BINDING_REDIRECT, + meta.add_service(metadata.SAML2_SERVICE_MAP['sso-redirect'], url + 'SSO/Redirect') meta.add_allowed_name_format(