Log out with ADFS do not set session expire
See original GitHub issueHello, Could anyone can help me?. Currently i am integrating my app with ADFS on windows server 2016. When a user call a API to logout on API server. Server redirects to ADFS like below. -I also pointed the param logoutUrl on setting passport-saml to https://adfsserver.com/adfs/ls/ var samlStrategy = passport._strategy(‘saml’); samlStrategy.logout(req, function(err, requestUrl) { //redirect to the IdP with the encrypted SAML logout request res.redirect(requestUrl); }); I set up Logout End Point on ADFS to point to https://myapi.com/callback/logout to redirect to my api when user logout successfully on ADFS.
The problem is : ADFS return to my callback API with status samlp:Status<samlp:StatusCode Value=“urn:oasis:names:tc:SAML:2.0:status:Requester”/> then i redirect user to login page. but when user login again. they do not redirected to ADFS login page because ADFS did not set cookies expire on session when user logout.So ADFS know that user.
I debug on ADFS log and see error like bellow
- Exception details:
System.ArgumentNullException: Value cannot be null.
Parameter name: collection
at System.Collections.Generic.List
1..ctor(IEnumerable
1 collection) at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.ProcessSignOut(SamlContext samlContext, String redirectUri, List`1 iFrameUris, Boolean partialLogout) - ADFS do not set cookies expire too.
- So currently user can log in the app from ADFS, but they can not logout from ADFS.
Issue Analytics
- State:
- Created 7 years ago
- Comments:6 (1 by maintainers)
Hi All, I fixed the issue some months ago. I was missing some settings on ADFS server at that time. The Lib is working very well.
@hoainam1989 I am using Windows Server 2012 for ADFS. We have integrated ADFS in Android Application. But we don’t know how to logout? What settings we need to do? Also, I think there is no communication happening within API as relying party and ADFS Server. API is just parsing the BEARER and checking expiry time. I tried this by changing some characters from bearer and called the API and I surprised It is working? How? Please help to get rid of this.