-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mail attribute from IdP is delivered as List of Addresses #56
Comments
This sounds kind of non-standard. If you can't configure shibboleth to give you "clean" arguments with just a single value, I believe you're better off creating a custom flask-multipass extension (it's very easy, you can subclass the original shibboleth provider and expose it in a custom python package via setuptools entry points). You can check this one to get a rough example on how to expose a custom one to flask-multipass. |
Thank you for your quick answer! |
In fact, using an array here is the standard: |
Sounds like it's indeed worth fixing in https://github.com/indico/flask-multipass then (both for the shibboleth and the saml providers). How standardized is the format for multiple values? If it's always In any case I propose moving the discussion over there since it's not Indico-specific. |
As usual with standards, "it depends". From the REFEDS standard point of view, they use similar logic to LDAP, so there are just multi-valued attributes and no separator in a string. So I think supporting
Indeed, that sounds good. Do you want to move the issue there, or should a new one be created? |
Problem Description
During the authentication procedure against our identity provider using the shibboleth method, one gets back a list of attributes including among others like
Eppn
,Cn
,Givenname
,Sn
the attributeMail
. In our IdP case this is not a single email address, but a list of the primary address followed by an arbitrary list of aliases. This looks e.g. like:Mail = '[email protected];[email protected];[email protected]; ...'
Or given in the full context (as example):
It seems, that indico requires a single email address at this point, as the data set shown upon login is the full string of all emails. This does not allow the
Mail
field to be used in the user data set in indico.Solution Proposal
It seems this problem could be solved by adding some parameters to the
indico.conf
syntax. One parameter covering the field separator and another one indicating which one of the fields should be taken as email address.An
indico.conf
could for example look like the following:This is my proposal. The example has three new parameters.
mail_array
defaulting toFalse
, so that current configs will not get broken for backward compatibility,mail_separator
containing the field separator of the string andmail_index
providing the index in the mail array that provides the email address to be chosen by indico.The text was updated successfully, but these errors were encountered: