You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After some recent chat on IRC with @pdurbinhere and here, I am opening this issue quickly, as @pdurbin pointed out slide 32 by @djbrooke regarding future changes on the auth flow.
Motivation
We have had a discussion at FZJ about what auth methods we will allow and the result was that we will need to provide multiple options, including reusing the already existing accounts from AD. We are part of DFN AAI/eduGain, so there is a SAML IdP present, too.
While working on IQSS/dataverse-kubernetes, I tried to integrate the SAML IdP in gdcc/dataverse-kubernetes#14 using mod_auth_mellon instead of Shibboleth. Shibboleth as an SP IMHO is a nightmare. You can only use it with mod_shib, have to run it on the same host/container as Apache does and for usage with Dataverse, you are tied to using mod_ajp. As Dataverse is very tightly integrated with Shibboleth specials (reading sessions, etc), I had no luck with mod_auth_mellon... 😢
Proposal
All of this is not very container friendly, which is why I would like to propose integrating a "new" option: usage of an IDM/IAM.
Most existing solutions are capable of OAuth2 and/or OpenID Connect. At least OAuth2 support is already present in Dataverse.
Many IDM solutions offer LDAP support as auth backend, so existing directories can be reused. No need to implement this in Dataverse.
Integrations might benefit from an IDM, too. Instead of creating multiple service points for SAML, etc. they can use easier OAuth2 for integration with Dataverse.
Most certainly even more.
Things for later optimization
Refactor to remove some unused functions
Refactor OAuth2 infrastructure to be named as "flow" or "token" or similar to be clearer
Refactor AbstractOAuth2Authentication Provider into proper interfaced contracts for usage in the bean and reflect the clearer naming above
Refactor JSON files for providers: make factoryData proper JSON for ease of parsing, etc.
Refactor OAuth2UserRecord creation to use factory/decorator pattern.
Costs
Minor(?) dev effort for Dataverse side, as lots of things are already present.
Examples
You might take a look at B2SHARE using B2ACCESS, also featuring X509 logins. This is based on Unity IDM, see here. Other, bigger examples for open source IDMs are Gluu and FreeIPA.
Footnotes
[1]: Current usage of ScribeJava should be replaced at least longterm, as it has no proper support for this.
After some recent chat on IRC with @pdurbin here and here, I am opening this issue quickly, as @pdurbin pointed out slide 32 by @djbrooke regarding future changes on the auth flow.
Motivation
We have had a discussion at FZJ about what auth methods we will allow and the result was that we will need to provide multiple options, including reusing the already existing accounts from AD. We are part of DFN AAI/eduGain, so there is a SAML IdP present, too.
While working on IQSS/dataverse-kubernetes, I tried to integrate the SAML IdP in gdcc/dataverse-kubernetes#14 using mod_auth_mellon instead of Shibboleth. Shibboleth as an SP IMHO is a nightmare. You can only use it with mod_shib, have to run it on the same host/container as Apache does and for usage with Dataverse, you are tied to using mod_ajp. As Dataverse is very tightly integrated with Shibboleth specials (reading sessions, etc), I had no luck with mod_auth_mellon... 😢
Proposal
All of this is not very container friendly, which is why I would like to propose integrating a "new" option: usage of an IDM/IAM.
Most existing solutions are capable of OAuth2 and/or OpenID Connect. At least OAuth2 support is already present in Dataverse.
Steps to be taken:
Benefits
Things for later optimization
Costs
Minor(?) dev effort for Dataverse side, as lots of things are already present.
Examples
You might take a look at B2SHARE using B2ACCESS, also featuring X509 logins. This is based on Unity IDM, see here. Other, bigger examples for open source IDMs are Gluu and FreeIPA.
Footnotes
[1]: Current usage of ScribeJava should be replaced at least longterm, as it has no proper support for this.