-class Tokens:
- # these are mapped by the Shibboleth SP software
- SHIB_EPPN = "HTTP_EPPN" # eduPersonPrincipalName
- SHIB_NAME = "HTTP_SHIB_INETORGPERSON_GIVENNAME"
- SHIB_SURNAME = "HTTP_SHIB_PERSON_SURNAME"
- SHIB_CN = "HTTP_SHIB_PERSON_COMMONNAME"
- SHIB_DISPLAYNAME = "HTTP_SHIB_INETORGPERSON_DISPLAYNAME"
- SHIB_EP_AFFILIATION = "HTTP_SHIB_EP_AFFILIATION"
- SHIB_SESSION_ID = "HTTP_SHIB_SESSION_ID"
-
-
-class NoUniqueToken(BaseException):
- def __init__(self, msg):
- self.msg = msg
-
-
-class NoRealName(BaseException):
- def __init__(self, msg):
- self.msg = msg
-
-
-def register_shibboleth_user(tokens):
- """Registers a Shibboleth user using the input hash as a source for data."""
-
- try:
- eppn = tokens[Tokens.SHIB_EPPN]
- except KeyError:
- raise NoUniqueToken("Authentication does not return a unique token")
-
- if Tokens.SHIB_DISPLAYNAME in tokens:
- realname = tokens[Tokens.SHIB_DISPLAYNAME]
- elif Tokens.SHIB_CN in tokens:
- realname = tokens[Tokens.SHIB_CN]
- elif Tokens.SHIB_NAME in tokens and Tokens.SHIB_SURNAME in tokens:
- realname = tokens[Tokens.SHIB_NAME] + ' ' + tokens[Tokens.SHIB_SURNAME]
- else:
- raise NoRealName("Authentication does not return the user's name")