-
Notifications
You must be signed in to change notification settings - Fork 405
Description
Hi everyone!
First of all I would like to say thank you for the great onelogin library. The job you do guys is great and allows us to use SAML SSO in our projects.
Our setup.
We are using SAML SSO on a Google App Engine library (Java 8 and standard environment) against an ADFS on Windows Server 2012.
The crrent version of the java library we are using is the version 2.2.0 (as maven dependency).
On the ADFS, the endpoint configuration is performed via automatic metadata retrival, through ADFS wizard.
After the RP is created, we switch the signature version to SHA1 (to match our configuration) and define the nameid policy to match the SAM-AccountName from AD.
Please find the configuration file we are using (I've removed pkey/publickey info and urls for privacy) as follows:
onelogin.saml2.strict = true
onelogin.saml2.debug = true
onelogin.saml2.sp.entityid = https://{URL_OF_SERVICE_PROVIDER}/saml-sso/metadata
onelogin.saml2.sp.assertion_consumer_service.url = https://{URL_OF_SERVICE_PROVIDER}/saml-sso/login
onelogin.saml2.sp.assertion_consumer_service.binding = urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
onelogin.saml2.sp.single_logout_service.url = https://{URL_OF_SERVICE_PROVIDER}/saml-sso/logout
onelogin.saml2.sp.single_logout_service.binding = urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect
onelogin.saml2.sp.nameidformat = urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
onelogin.saml2.sp.x509cert = -----BEGIN CERTIFICATE-----\
{OMITTED FOR PRIVACY}\
-----END CERTIFICATE-----
onelogin.saml2.sp.privatekey = -----BEGIN PRIVATE KEY-----\
{OMITTED FOR PRIVACY}\
-----END PRIVATE KEY-----
onelogin.saml2.idp.entityid = http://{URL_OF_IDENTITY_PROVIDER}/adfs/services/trust
onelogin.saml2.idp.single_sign_on_service.url = https://{URL_OF_IDENTITY_PROVIDER}/adfs/ls/
onelogin.saml2.idp.single_sign_on_service.binding = urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect
onelogin.saml2.idp.single_logout_service.url = https://{URL_OF_IDENTITY_PROVIDER}/adfs/ls/?wa=wsignout1.0
onelogin.saml2.idp.single_logout_service.response.url =
onelogin.saml2.idp.single_logout_service.binding = urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect
onelogin.saml2.idp.x509cert = -----BEGIN CERTIFICATE-----\
{OMITTED FOR PRIVACY}\
-----END CERTIFICATE-----
onelogin.saml2.security.nameid_encrypted = true
onelogin.saml2.security.authnrequest_signed = true
onelogin.saml2.security.logoutrequest_signed = true
onelogin.saml2.security.logoutresponse_signed = true
onelogin.saml2.security.want_messages_signed =
onelogin.saml2.security.want_assertions_signed = true
onelogin.saml2.security.sign_metadata = false
onelogin.saml2.security.want_assertions_encrypted = true
onelogin.saml2.security.want_nameid_encrypted = false
onelogin.saml2.security.requested_authncontext =
onelogin.saml2.security.onelogin.saml2.security.requested_authncontextcomparison = exact
onelogin.saml2.security.want_xml_validation = true
onelogin.saml2.security.signature_algorithm = http://www.w3.org/2000/09/xmldsig#rsa-sha1
onelogin.saml2.organization.name = {OMITTED}
onelogin.saml2.organization.displayname = {OMITTED}
onelogin.saml2.organization.url = {OMITTED}
onelogin.saml2.contacts.technical.given_name = {OMITTED}
onelogin.saml2.contacts.technical.email_address = {OMITTED}
onelogin.saml2.contacts.support.given_name = {OMITTED}
onelogin.saml2.contacts.support.email_address = {OMITTED}
The problem.
The system perfectly works when performing LOGIN. However, when performing the logout, something happens on the ADFS server, which causes the following three errors.
Such problems are encountered when
onelogin.saml2.idp.single_logout_service.url = https://{URL_OF_ADFS_EP}/adfs/ls/ .
However, we could achieve the logout feature by changing the previous parameter as follows:
**onelogin.saml2.idp.single_logout_service.url = https://{URL_OF_ADFS_EP}/adfs/ls/?wa=wsignout1.0
In the latter case, the logout happens as expected but the user is never redirected back to the ServiceProvider. We have also tried to populate the onelogin.saml2.idp.single_logout_service.response.url parameter, with no luck.
From what I've understood, we should not use the "wa=wsignout1.0" option, because that regards the windows federation logout and does not actually perfom the SAML logout. Indeed, according to the saml specification, I expect the endpoint to verify the logout request and return back to the ServiceProvider with a LogoutRespose that we shold validate.
How can we make this working using the first approach and get rid of the errors encoutered when no wa=wsignout1.0 parameter is specified?
Thank you in advice and keep the good work up!