--Hi all,
At QDR we are finalizing our Dataverse integration with Shibboleth. We have successfully configured our Dataverse and Drupal sites to authenticate against our Shibboleth IdP. Our Shibboleth SP is configured with two entity IDs, one for Drupal and one for Dataverse (shibboleth2.xml config file attached).
The problem is that after the user is authenticated for either Drupal or Dataverse, and then navigates to the other site, the other site does not recognize the user as being logged-in and the user needs to click on Login again to be authenticated for the second site. For our SSO to work seamlessly, I would like to configure it so that the second site can recognize that the user has already been authenticated, and log the user in behind-the-scenes without any interaction from the user.
Here is my thread on the topic in the Shibboleth mailing list:
I am trying to follow Scott Cantor’s advice in his reply from 11/25:
One way you haven't looked at is IsPassive. If you wanted to, your application could issue a passive login request to the IdP and if the user's already logged in, it will be seamless. With the Shibboleth SP, that's just a simple redirect to /Shibboleth.sso/Login?isPassive=1
The isPassive login request seems like a good solution for us. Reference:
https://wiki.shibboleth.net/confluence/display/SHIB2/isPassive
However, this passive login does not seem to work for Dataverse. When a user starts at the Dataverse site, authenticates with the IdP, then navigates to the Drupal site, and then a call is made to [Drupal domain]/Shibboleth.sso/Login?isPassive=1, the user is properly logged into the Drupal site. However when I attempt to do the same thing by first logging into the Drupal site and then navigating to Dataverse, making a call to [Dataverse domain] /Shibboleth.sso/Login?isPassive=1 does create an SSO session for the Dataverse domain, but does not log the user into the Dataverse site.
Can such a passive login request to the Shibboleth IdP work for logging the user into Dataverse, or do I need to implement a different solution?
Thanks in advance for your help,
Alex
You received this message because you are subscribed to the Google Groups "Dataverse Users Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dataverse-community+unsub...@googlegroups.com.
To post to this group, send email to dataverse-community@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dataverse-community/682ec462-4fba-4754-b203-7dda234b8e41%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Thanks Phil.I was just able to get passive login to work for Dataverse by supplying a target parameter in the url:
https://dv.stage.qdr.org/Shibboleth.sso/Login?target=https%3A%2F%2Fdv.stage.qdr.org%2Fshib.xhtml?isPassive=1[Dataverse host]/shib.xhtml has to be supplied as the target parameter for the Shibboleth.sso/Login call, otherwise auto-login doesn't work, regardless of whether or not the isPassive parameter is used.
Also, for passive login, I found that I had to put the isPassive parameter after the target parameter in the query string, otherwise the call didn't work.My best,Alex
To unsubscribe from this group and stop receiving emails from it, send an email to dataverse-community+unsubscribe...@googlegroups.com.
To post to this group, send email to dataverse...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dataverse-community/682ec462-4fba-4754-b203-7dda234b8e41%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--Philip Durbin
Software Developer for http://dataverse.org
http://www.iq.harvard.edu/people/philip-durbin
Yup, I got it to work. I'd like to clarify that the order of the parameters in the query string actually does not matter, I had hastily created my query string with incorrect syntax.Now I need to add some code to our Dataverse application that will perform the passive logins. I will try to follow the JS example in the link below:Sample JavaScript that can be used to have an auto-login in case a user already has a session at an IdPIs there a page in the published guide for Dataverse that would cover the best place to put a custom JS file?
To view this discussion on the web visit https://groups.google.com/d/msgid/dataverse-community/CABbxx8HmOn7-uC%3DLmTSS_hGqk4LVT5%2B_czqCxEv%3D06k%3DY7g9EQ%40mail.gmail.com.To unsubscribe from this group and stop receiving emails from it, send an email to dataverse-community+unsub...@googlegroups.com.
To post to this group, send email to dataverse-community@googlegroups.com.
To post to this group, send email to dataverse...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dataverse-community/682ec462-4fba-4754-b203-7dda234b8e41%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to dataverse-community+unsubscribe...@googlegroups.com.
To post to this group, send email to dataverse...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dataverse-community/682ec462-4fba-4754-b203-7dda234b8e41%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--Philip Durbin
Software Developer for http://dataverse.org
http://www.iq.harvard.edu/people/philip-durbin
--
You received this message because you are subscribed to the Google Groups "Dataverse Users Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dataverse-community+unsub...@googlegroups.com.
To post to this group, send email to dataverse-community@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dataverse-community/750fdb22-a186-4a34-8151-d87b8d7fa3bb%40googlegroups.com.
Hey Phil,I've created a pull request for this feature:If this is something that others can benefit from, then let's review my code and merge it into the DV codebaseMy Best,Alex
Problem being solved:
The problem is that after the user is authenticated for either Drupal or Dataverse, and then navigates to the other site, the other site does not recognize the user as being logged-in and the user needs to click on Login again to be authenticated for the second site. For our SSO to work seamlessly, I would like to configure it so that the second site can recognize that the user has already been authenticated, and log the user in behind-the-scenes without any interaction from the user.
Recommended solution is to use isPassive flag from Shibboleth protocol:
Use isPassive:
https://wiki.shibboleth.net/confluence/display/SHIB2/isPassive
Requirements:
- Only works if a Service Provider 2.x is installed on the same host
- JavaScript must be enabled. Otherwise the script won't have any effect.
- The script must be able to set cookies (required for Shibboleth Service Provider as well)
- In the shibboleth2.xml there must be defined a redirectErrors="#THIS PAGE#" in
the <Errors> element. #THIS PAGE# must be the relative/absolute URL of the page
this script is embedded in.
- It also makes sense to protect #THIS PAGE# with a lazy session in order to use
the Shibboleth attribute that should be available after authentication.
How it is implemented by Dataverse:
1. Log in filter implemented on dataverse_template.xhtml is updated to check whether isPassive is enabled.
2. If enabled, it sends an isPassive javascript to the browser.
3. The javascript checks for a session cookie with the initial location, redirects back to shibd for user free login using existing session.
Example redirect URL: https://dv.stage.qdr.org/Shibboleth.sso/Login?target=https%3A%2F%2Fdv.stage.qdr.org%2Fshib.xhtml?isPassive=1
Configuration:
New db boolean setting, :ShibPassiveLoginEnabled, default is false.
Errors:
Throws an error if either condition cannot be met:
1. the user already needs to have a valid session at his Identity Provider and
2. the Discovery Service must be able to "guess" this Identity Provider for the user.
Questions:
What happens if the first app accepts less or different attributes than Dataverse? Any corrupted user records?
Any hacking potential? (Is lazy session configured?)
--
You received this message because you are subscribed to a topic in the Google Groups "Dataverse Users Community" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dataverse-community/Fc0wC4fLyeI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dataverse-community+unsub...@googlegroups.com.
To post to this group, send email to dataverse-community@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dataverse-community/9c4f58cb-c68c-4a29-bca9-a1ab776ef050%40googlegroups.com.
OK, this has been merged. Thanks for the contribution and explanation.
Kevin