Skip to content
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

Optionally read affiliation from a Shibbolet attribution instead of DiscoFeed #6514

Closed
pkiraly opened this issue Jan 14, 2020 · 3 comments · Fixed by #6729
Closed

Optionally read affiliation from a Shibbolet attribution instead of DiscoFeed #6514

pkiraly opened this issue Jan 14, 2020 · 3 comments · Fixed by #6729

Comments

@pkiraly
Copy link
Member

pkiraly commented Jan 14, 2020

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:

  1. the service name is not an organisation name
  2. the user can not change the bad affiliation string
  3. 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):

  1. adding an optional configuration setting: affiliationSource for the source of affiliation with two options:
  • DiscoFeed (default value, and runs the current code without any modification)
  • a Shibboleth attribute name
  1. configure Shibbolet to send the attribute we set in step 1

  2. 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.

@pdurbin
Copy link
Member

pdurbin commented Jan 14, 2020

the user can not change the bad affiliation string

I'm especially interested in fixing this. OAuth, Builtin, and OIDC users can set their affiliation to whatever they want whenever they want. Should we empower Shibboleth users to edit their affiliation as well?

@pkiraly
Copy link
Member Author

pkiraly commented Jan 14, 2020

@pdurbin I agree, changing affiliation would be useful. We should take care that once the affiliation is manually changed Dataverse should not owverwrite it.

On the other hand: changing affiliation is a related, but different issue, it needs change in different code than that of the extraction of the affiliation from Shibboleth attributes, so it deserves its own issue.

@pkiraly
Copy link
Member Author

pkiraly commented Jan 14, 2020

I have created a new ticket for the manual change: #6515

pkiraly added a commit to pkiraly/dataverse that referenced this issue Mar 6, 2020
pkiraly added a commit to pkiraly/dataverse that referenced this issue Mar 6, 2020
kcondon added a commit that referenced this issue Mar 18, 2020
…n-from-shibbolet-attribution

Issue #6514: Implement affiliation reading from Shibboleth attribute.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants