diff --git a/src/sso_server/sso_server/saml/registry.py b/src/sso_server/sso_server/saml/registry.py index 1dbf43a7508554a3fdab792dbdec9c537f58e038..0f4b8455111ace76fc80c334a70d8a93b25664e9 100644 --- a/src/sso_server/sso_server/saml/registry.py +++ b/src/sso_server/sso_server/saml/registry.py @@ -3,7 +3,9 @@ from __future__ import absolute_import """ Registers and loads Processor classes from settings. """ +import base64 import warnings +import zlib from importlib import import_module @@ -14,6 +16,7 @@ from .app import saml_app def SSOProcessor(base.Processor): + """SAML processor for the Ruby omniauth saml gem.""" def _validate_request(self): super(SSOProcessor, self)._validate_request() @@ -21,7 +24,14 @@ def SSOProcessor(base.Processor): if '.autistici.org' not in url: raise exceptions.CannotHandleAssertion('ACS is not a supported URL') + def _decode_request(self): + self._request_xml = zlib.decompress(base64.b64decode(self._saml_request), -15) + def _format_assertion(self): + # Add attributes that gitlab needs (?). + self._assertion_params['ATTRIBUTES'] = { + 'name': self._subject, + } self._assertion_xml = xml_render.get_assertion_salesforce_xml(self._assertion_params, signed=True)