diff --git a/src/s2repoze/plugins/sp.py b/src/s2repoze/plugins/sp.py index 02f6334..a80dece 100644 --- a/src/s2repoze/plugins/sp.py +++ b/src/s2repoze/plugins/sp.py @@ -496,7 +496,9 @@ class SAML2Plugin(object): # find it environ["post.fieldstorage"] = post # restore wsgi.input incase that is needed - environ['wsgi.input'] = StringIO(environ['s2repoze.body']) + # only of s2repoze.body is present + if 's2repoze.body' in environ: + environ['wsgi.input'] = StringIO(environ['s2repoze.body']) return {} else: logger.info("[sp.identify] --- SAMLResponse ---") diff --git a/src/saml2/response.py b/src/saml2/response.py index 9f421b8..6e642e4 100644 --- a/src/saml2/response.py +++ b/src/saml2/response.py @@ -24,6 +24,7 @@ from saml2.samlp import STATUS_TOO_MANY_RESPONSES from saml2.samlp import STATUS_UNKNOWN_ATTR_PROFILE from saml2.samlp import STATUS_UNKNOWN_PRINCIPAL from saml2.samlp import STATUS_UNSUPPORTED_BINDING +from saml2.samlp import STATUS_RESPONDER import xmldsig as ds import xmlenc as xenc @@ -158,6 +159,8 @@ class StatusUnknownPrincipal(StatusError): class StatusUnsupportedBinding(StatusError): pass +class StatusResponder(StatusError): + pass STATUSCODE2EXCEPTION = { STATUS_VERSION_MISMATCH: StatusVersionMismatch, @@ -180,6 +183,7 @@ STATUSCODE2EXCEPTION = { STATUS_UNKNOWN_ATTR_PROFILE: StatusUnknownAttrProfile, STATUS_UNKNOWN_PRINCIPAL: StatusUnknownPrincipal, STATUS_UNSUPPORTED_BINDING: StatusUnsupportedBinding, + STATUS_RESPONDER: StatusResponder, } # ---------------------------------------------------------------------------