X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=ipsilon%2Fproviders%2Fsaml2%2Fprovider.py;h=b70582effbfce48c225547b3bf0aa47fe99f162a;hb=2751451f4158417e66974d6415d2da84f612ab3c;hp=c8425bbd668a93d067366696cc29271b603057ae;hpb=cfe24fa3dc15d87f3ace944a2d62a0f4c5ee496c;p=cascardo%2Fipsilon.git diff --git a/ipsilon/providers/saml2/provider.py b/ipsilon/providers/saml2/provider.py index c8425bb..b70582e 100644 --- a/ipsilon/providers/saml2/provider.py +++ b/ipsilon/providers/saml2/provider.py @@ -3,8 +3,9 @@ from ipsilon.providers.common import ProviderException from ipsilon.util import config as pconfig from ipsilon.util.config import ConfigHelper -from ipsilon.tools.saml2metadata import SAML2_NAMEID_MAP +from ipsilon.tools.saml2metadata import SAML2_NAMEID_MAP, NSMAP from ipsilon.util.log import Log +from lxml import etree import lasso import re @@ -49,6 +50,14 @@ class ServiceProvider(ServiceProviderConfig): self._properties = data[idval] self._staging = dict() self.load_config() + self.logout_mechs = [] + xmldoc = etree.XML(str(data[idval]['metadata'])) + logout = xmldoc.xpath('//md:EntityDescriptor' + '/md:SPSSODescriptor' + '/md:SingleLogoutService', + namespaces=NSMAP) + for service in logout: + self.logout_mechs.append(service.values()[0]) def load_config(self): self.new_config( @@ -266,12 +275,13 @@ class ServiceProviderCreator(object): class IdentityProvider(Log): - def __init__(self, config): + def __init__(self, config, sessionfactory): self.server = lasso.Server(config.idp_metadata_file, config.idp_key_file, None, config.idp_certificate_file) self.server.role = lasso.PROVIDER_ROLE_IDP + self.sessionfactory = sessionfactory def add_provider(self, sp): self.server.addProviderFromBuffer(lasso.PROVIDER_ROLE_SP,