Editorial
This commit is contained in:
@@ -36,80 +36,99 @@ except ImportError:
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class XmlParseError(Exception):
|
class XmlParseError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class WrongMessageType(Exception):
|
class WrongMessageType(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_response(text):
|
def parse_soap_enveloped_saml_response(text):
|
||||||
tags = ['{%s}Response' % SAMLP_NAMESPACE,
|
tags = ['{%s}Response' % SAMLP_NAMESPACE,
|
||||||
'{%s}LogoutResponse' % SAMLP_NAMESPACE]
|
'{%s}LogoutResponse' % SAMLP_NAMESPACE]
|
||||||
return parse_soap_enveloped_saml_thingy(text, tags)
|
return parse_soap_enveloped_saml_thingy(text, tags)
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_logout_response(text):
|
def parse_soap_enveloped_saml_logout_response(text):
|
||||||
tags = ['{%s}Response' % SAMLP_NAMESPACE,
|
tags = ['{%s}Response' % SAMLP_NAMESPACE,
|
||||||
'{%s}LogoutResponse' % SAMLP_NAMESPACE]
|
'{%s}LogoutResponse' % SAMLP_NAMESPACE]
|
||||||
return parse_soap_enveloped_saml_thingy(text, tags)
|
return parse_soap_enveloped_saml_thingy(text, tags)
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_attribute_query(text):
|
def parse_soap_enveloped_saml_attribute_query(text):
|
||||||
expected_tag = '{%s}AttributeQuery' % SAMLP_NAMESPACE
|
expected_tag = '{%s}AttributeQuery' % SAMLP_NAMESPACE
|
||||||
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_attribute_response(text):
|
def parse_soap_enveloped_saml_attribute_response(text):
|
||||||
tags = ['{%s}Response' % SAMLP_NAMESPACE,
|
tags = ['{%s}Response' % SAMLP_NAMESPACE,
|
||||||
'{%s}AttributeResponse' % SAMLP_NAMESPACE]
|
'{%s}AttributeResponse' % SAMLP_NAMESPACE]
|
||||||
return parse_soap_enveloped_saml_thingy(text, tags)
|
return parse_soap_enveloped_saml_thingy(text, tags)
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_logout_request(text):
|
def parse_soap_enveloped_saml_logout_request(text):
|
||||||
expected_tag = '{%s}LogoutRequest' % SAMLP_NAMESPACE
|
expected_tag = '{%s}LogoutRequest' % SAMLP_NAMESPACE
|
||||||
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_authn_request(text):
|
def parse_soap_enveloped_saml_authn_request(text):
|
||||||
expected_tag = '{%s}AuthnRequest' % SAMLP_NAMESPACE
|
expected_tag = '{%s}AuthnRequest' % SAMLP_NAMESPACE
|
||||||
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_artifact_resolve(text):
|
def parse_soap_enveloped_saml_artifact_resolve(text):
|
||||||
expected_tag = '{%s}ArtifactResolve' % SAMLP_NAMESPACE
|
expected_tag = '{%s}ArtifactResolve' % SAMLP_NAMESPACE
|
||||||
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_artifact_response(text):
|
def parse_soap_enveloped_saml_artifact_response(text):
|
||||||
expected_tag = '{%s}ArtifactResponse' % SAMLP_NAMESPACE
|
expected_tag = '{%s}ArtifactResponse' % SAMLP_NAMESPACE
|
||||||
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_name_id_mapping_request(text):
|
def parse_soap_enveloped_saml_name_id_mapping_request(text):
|
||||||
expected_tag = '{%s}NameIDMappingRequest' % SAMLP_NAMESPACE
|
expected_tag = '{%s}NameIDMappingRequest' % SAMLP_NAMESPACE
|
||||||
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_name_id_mapping_response(text):
|
def parse_soap_enveloped_saml_name_id_mapping_response(text):
|
||||||
expected_tag = '{%s}NameIDMappingResponse' % SAMLP_NAMESPACE
|
expected_tag = '{%s}NameIDMappingResponse' % SAMLP_NAMESPACE
|
||||||
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_manage_name_id_request(text):
|
def parse_soap_enveloped_saml_manage_name_id_request(text):
|
||||||
expected_tag = '{%s}ManageNameIDRequest' % SAMLP_NAMESPACE
|
expected_tag = '{%s}ManageNameIDRequest' % SAMLP_NAMESPACE
|
||||||
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_manage_name_id_response(text):
|
def parse_soap_enveloped_saml_manage_name_id_response(text):
|
||||||
expected_tag = '{%s}ManageNameIDResponse' % SAMLP_NAMESPACE
|
expected_tag = '{%s}ManageNameIDResponse' % SAMLP_NAMESPACE
|
||||||
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_assertion_id_request(text):
|
def parse_soap_enveloped_saml_assertion_id_request(text):
|
||||||
expected_tag = '{%s}AssertionIDRequest' % SAMLP_NAMESPACE
|
expected_tag = '{%s}AssertionIDRequest' % SAMLP_NAMESPACE
|
||||||
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_assertion_id_response(text):
|
def parse_soap_enveloped_saml_assertion_id_response(text):
|
||||||
tags = ['{%s}Response' % SAMLP_NAMESPACE,
|
tags = ['{%s}Response' % SAMLP_NAMESPACE,
|
||||||
'{%s}AssertionIDResponse' % SAMLP_NAMESPACE]
|
'{%s}AssertionIDResponse' % SAMLP_NAMESPACE]
|
||||||
return parse_soap_enveloped_saml_thingy(text, tags)
|
return parse_soap_enveloped_saml_thingy(text, tags)
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_authn_query(text):
|
def parse_soap_enveloped_saml_authn_query(text):
|
||||||
expected_tag = '{%s}AuthnQuery' % SAMLP_NAMESPACE
|
expected_tag = '{%s}AuthnQuery' % SAMLP_NAMESPACE
|
||||||
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
return parse_soap_enveloped_saml_thingy(text, [expected_tag])
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_authn_query_response(text):
|
def parse_soap_enveloped_saml_authn_query_response(text):
|
||||||
tags = ['{%s}Response' % SAMLP_NAMESPACE]
|
tags = ['{%s}Response' % SAMLP_NAMESPACE]
|
||||||
return parse_soap_enveloped_saml_thingy(text, tags)
|
return parse_soap_enveloped_saml_thingy(text, tags)
|
||||||
|
|
||||||
|
|
||||||
def parse_soap_enveloped_saml_authn_response(text):
|
def parse_soap_enveloped_saml_authn_response(text):
|
||||||
tags = ['{%s}Response' % SAMLP_NAMESPACE]
|
tags = ['{%s}Response' % SAMLP_NAMESPACE]
|
||||||
return parse_soap_enveloped_saml_thingy(text, tags)
|
return parse_soap_enveloped_saml_thingy(text, tags)
|
||||||
@@ -154,9 +173,10 @@ import re
|
|||||||
|
|
||||||
NS_AND_TAG = re.compile("\{([^}]+)\}(.*)")
|
NS_AND_TAG = re.compile("\{([^}]+)\}(.*)")
|
||||||
|
|
||||||
|
|
||||||
def instanciate_class(item, modules):
|
def instanciate_class(item, modules):
|
||||||
m = NS_AND_TAG.match(item.tag)
|
m = NS_AND_TAG.match(item.tag)
|
||||||
ns,tag = m.groups()
|
ns, tag = m.groups()
|
||||||
for module in modules:
|
for module in modules:
|
||||||
if module.NAMESPACE == ns:
|
if module.NAMESPACE == ns:
|
||||||
try:
|
try:
|
||||||
@@ -166,6 +186,7 @@ def instanciate_class(item, modules):
|
|||||||
continue
|
continue
|
||||||
raise Exception("Unknown class: ns='%s', tag='%s'" % (ns, tag))
|
raise Exception("Unknown class: ns='%s', tag='%s'" % (ns, tag))
|
||||||
|
|
||||||
|
|
||||||
def class_instances_from_soap_enveloped_saml_thingies(text, modules):
|
def class_instances_from_soap_enveloped_saml_thingies(text, modules):
|
||||||
"""Parses a SOAP enveloped header and body SAML thing and returns the
|
"""Parses a SOAP enveloped header and body SAML thing and returns the
|
||||||
thing as a dictionary class instance.
|
thing as a dictionary class instance.
|
||||||
@@ -181,7 +202,7 @@ def class_instances_from_soap_enveloped_saml_thingies(text, modules):
|
|||||||
|
|
||||||
assert envelope.tag == '{%s}Envelope' % soapenv.NAMESPACE
|
assert envelope.tag == '{%s}Envelope' % soapenv.NAMESPACE
|
||||||
assert len(envelope) >= 1
|
assert len(envelope) >= 1
|
||||||
env = {"header":[], "body":None}
|
env = {"header": [], "body": None}
|
||||||
|
|
||||||
for part in envelope:
|
for part in envelope:
|
||||||
if part.tag == '{%s}Body' % soapenv.NAMESPACE:
|
if part.tag == '{%s}Body' % soapenv.NAMESPACE:
|
||||||
@@ -193,6 +214,7 @@ def class_instances_from_soap_enveloped_saml_thingies(text, modules):
|
|||||||
|
|
||||||
return env
|
return env
|
||||||
|
|
||||||
|
|
||||||
def open_soap_envelope(text):
|
def open_soap_envelope(text):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -206,7 +228,7 @@ def open_soap_envelope(text):
|
|||||||
|
|
||||||
assert envelope.tag == '{%s}Envelope' % soapenv.NAMESPACE
|
assert envelope.tag == '{%s}Envelope' % soapenv.NAMESPACE
|
||||||
assert len(envelope) >= 1
|
assert len(envelope) >= 1
|
||||||
content = {"header":[], "body":None}
|
content = {"header": [], "body": None}
|
||||||
|
|
||||||
for part in envelope:
|
for part in envelope:
|
||||||
if part.tag == '{%s}Body' % soapenv.NAMESPACE:
|
if part.tag == '{%s}Body' % soapenv.NAMESPACE:
|
||||||
@@ -219,6 +241,7 @@ def open_soap_envelope(text):
|
|||||||
|
|
||||||
return content
|
return content
|
||||||
|
|
||||||
|
|
||||||
def make_soap_enveloped_saml_thingy(thingy, headers=None):
|
def make_soap_enveloped_saml_thingy(thingy, headers=None):
|
||||||
""" Returns a soap envelope containing a SAML request
|
""" Returns a soap envelope containing a SAML request
|
||||||
as a text string.
|
as a text string.
|
||||||
@@ -238,6 +261,7 @@ def make_soap_enveloped_saml_thingy(thingy, headers=None):
|
|||||||
|
|
||||||
return "%s" % soap_envelope
|
return "%s" % soap_envelope
|
||||||
|
|
||||||
|
|
||||||
def soap_fault(message=None, actor=None, code=None, detail=None):
|
def soap_fault(message=None, actor=None, code=None, detail=None):
|
||||||
""" Create a SOAP Fault message
|
""" Create a SOAP Fault message
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user