X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Fproviders%2Fsaml2%2Fauth.py;h=bac73a54d9608beac7515400849b0f268ac0cb92;hp=64d9835ebc1eb2192919758dbed5b63829fba020;hb=ed5ed179806c921036cf811e1890408aac072bef;hpb=2cf4bcfe804aaa01e4587388e0870274c20ca428 diff --git a/ipsilon/providers/saml2/auth.py b/ipsilon/providers/saml2/auth.py index 64d9835..bac73a5 100755 --- a/ipsilon/providers/saml2/auth.py +++ b/ipsilon/providers/saml2/auth.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -from ipsilon.providers.common import ProviderPageBase +from ipsilon.providers.common import ProviderPageBase, ProviderException from ipsilon.providers.saml2.provider import ServiceProvider from ipsilon.providers.saml2.provider import InvalidProviderId from ipsilon.providers.saml2.provider import NameIdNotAllowed @@ -27,25 +27,19 @@ import datetime import lasso -class AuthenticationError(Exception): +class AuthenticationError(ProviderException): def __init__(self, message, code): super(AuthenticationError, self).__init__(message) - self.message = message self.code = code + self._debug('%s [%s]' % (message, code)) - def __str__(self): - return repr(self.message) - -class InvalidRequest(Exception): +class InvalidRequest(ProviderException): def __init__(self, message): super(InvalidRequest, self).__init__(message) - self.message = message - - def __str__(self): - return repr(self.message) + self._debug(message) class AuthenticateRequest(ProviderPageBase): @@ -65,7 +59,7 @@ class AuthenticateRequest(ProviderPageBase): def _parse_request(self, message): - login = lasso.Login(self.cfg.idp) + login = self.cfg.idp.get_login_handler() try: login.processAuthnRequestMsg(message) @@ -170,9 +164,11 @@ class AuthenticateRequest(ProviderPageBase): nameid = None if nameidfmt == lasso.SAML2_NAME_IDENTIFIER_FORMAT_PERSISTENT: - nameid = user.name ## TODO map to something else ? + ## TODO map to something else ? + nameid = provider.normalize_username(user.name) elif nameidfmt == lasso.SAML2_NAME_IDENTIFIER_FORMAT_TRANSIENT: - nameid = user.name ## TODO map to something else ? + ## TODO map to something else ? + nameid = provider.normalize_username(user.name) elif nameidfmt == lasso.SAML2_NAME_IDENTIFIER_FORMAT_KERBEROS: nameid = us.get_data('user', 'krb_principal_name') elif nameidfmt == lasso.SAML2_NAME_IDENTIFIER_FORMAT_EMAIL: @@ -187,7 +183,7 @@ class AuthenticateRequest(ProviderPageBase): raise AuthenticationError("Unavailable Name ID type", lasso.SAML2_STATUS_CODE_AUTHN_FAILED) - # TODO: add user attributes as policy requires taking from 'usersession' + # TODO: add user attributes as policy requires from 'usersession' def saml2error(self, login, code, message): status = lasso.Samlp2Status()