-
Notifications
You must be signed in to change notification settings - Fork 401
Logout problem on ADFS #130
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
Comments
If you add the wa=wsignout1.0, the LogoutRequest that you are sending is ignored and ADFS start a new IdP-SLO flow, sending a LogoutRequest. On your configuration I see that you has SLO signature enabled:
Based on the crypto error, I guess that ADFS has registered a wrong SP public certificate, review the value stored on ADFS. You can use this tool to format the public cert.. and you can try validate it using
|
The problem is that you set a wrong value for the Signature.
but you may use:
|
Can you share the LogoutRequest sent to ADFS and give the "must provide an Issuer with no ...." |
Sure. I'd prefer to send it only to you rather than posting the entire thing here. Even if it is for DEVELOPMENT, I don't feel comfortable sharing this thing here. Tell me how to send it to you and I'll do it right away. |
I changed my mind, I've just removed the URLs. Here it is.
|
If you see the Issue element has no other attibute.. so that ADFS error makes no sense.. |
Based on that thread: https://social.msdn.microsoft.com/Forums/vstudio/en-US/85b1a66f-ca0b-4ed6-a32f-c8dca4fdd6c7/slo-error-msis7074-on-adfs?forum=Geneva The real reason is that ADFS required a Signature and you are sending an Unsigned Logout.. so makes sense that you receive an error on scenario: The other scenario fail because it seems ADFS requires SHA256 and you are sending SHA1 Have you tried SHA256 Alg + Logout Signed? |
Configuration follows:
|
Hi pitbulk, in order to give you more power of debugging, I'm replicating the DEV envinronment on another machine, using brand new test certificates, so that I can post complete configuration file-logs without sanitizing them. In this way, you'll have complete visibility on what's going on. Would this help? |
Hi Pitbulk, This thread has become too dirty, that is my fault. Can you please close it so I open another one from scratch, using the brand new test configuration I've set up? |
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!
The text was updated successfully, but these errors were encountered: