Add ability to strip domain/realm per provider
authorSimo Sorce <simo@redhat.com>
Sun, 2 Mar 2014 23:32:06 +0000 (18:32 -0500)
committerSimo Sorce <simo@redhat.com>
Mon, 3 Mar 2014 00:11:34 +0000 (19:11 -0500)
This allows to return (hopefully) the same name whether the user
authenticated via ESSO or form based authentication.

Crude for now, may be augmented with some regex configuration in the future.

Signed-off-by: Simo Sorce <simo@redhat.com>
ipsilon/providers/saml2/auth.py
ipsilon/providers/saml2/provider.py

index 64d9835..7f92d77 100755 (executable)
@@ -170,9 +170,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:
index c738ac2..acf2ee7 100755 (executable)
@@ -106,3 +106,8 @@ class ServiceProvider(object):
     def _debug(self, fact):
         if cherrypy.config.get('debug', False):
             cherrypy.log(fact)
+
+    def normalize_username(self, username):
+        if 'strip domain' in self._properties:
+            return username.split('@', 1)[0]
+        return username