-
Notifications
You must be signed in to change notification settings - Fork 535
Description
In our Shibboleth implementation the DiscoFeed contains only one service name, and the user's affiliation is stored in an attribution of the XML file sent by Shibboleth service. This makes several problems:
- the service name is not an organisation name
- the user can not change the bad affiliation string
- the bad affiliation string occurs in every dataverse and dataset creation form as a default value
This situation is frustrating for bot our users and us.
Here is a suggestion for a Dataverse code change to solve this issue. It would have multiple components (all of these are pseudo code):
- adding an optional configuration setting:
affiliationSourcefor the source of affiliation with two options:
- DiscoFeed (default value, and runs the current code without any modification)
- a Shibboleth attribute name
-
configure Shibbolet to send the attribute we set in step 1
-
within
ShibServiceBean.getAffiliation()method add a switch like this:
AffiliationSource affiliationSource = ... // read configuration
switch (affiliationSource.getType()) {
case AffiliationSource.Shibbolet:
String shibbolethAttribute = affiliationSource.getShibbolethAttribute();
String affiliation = readAffiliationFromAttribute(shibbolethAttribute);
break;
case AffiliationSource.DiscoFeed:
default:
String affiliation = ... // run current code
break;
}
AffiliationSource has a type, which is an enum of ShibbolethAttribute and DiscoFeed, and a shibboletAttribute (String) field, which contains which attribute should be used.
note: this comment is summary of a thread at the dataverse-community mailing list: https://groups.google.com/forum/#!topic/dataverse-community/7FwrzfIQZfY.