Closed ian-malvi closed 1 month ago
It looks like you're using the Sustainsys Saml2 library to configure the external identity provider. A successful logout with that requires a significant number of parameters which all have to be set correctly. Please enable logging and look for this log entry.
If that doesn't help you with figuring out the problem, please open an issue at Sustainsys' issue tracker.
Thank you @RolandGuijt
Yes, We had missing claims details there. I appreciate you for this.
Which version of Duende IdentityServer are you using? 7.0.6
Which version of .NET are you using? .Net 8
Describe the bug
We have created Identity server to authenticate web api from Angular application. We are using external idp provider and local idp for login.
User can login and logout using both external and local idp fine. But When logout using external idp, it logout user from identity server but not from external idp.
Existing flow
When user hit web url it redirect to identity server login page url if user not logged in. User will enter email id and submit on login page, It redirect to external idp login page page. after successfully login in external idp it redirect to web url (Angular SPA).
When user click on logout it redirected to identity server login page without logout from external idp. It should be logout from identity server and external idp both.
We have configurations as below.
Identity Server startup configurations
Web API startup configurations
Angular configurations
We are using oidc-client - ^1.11.5 package in angular
private _userManager: UserManager;
private get idpSettings(): UserManagerSettings { return { authority: environment.idpAuthority, client_id: environment.clientId, redirect_uri:
${environment.clientRoot}/signin-callback
, scope: "openid profile myApi", response_type: "code", post_logout_redirect_uri:${environment.clientRoot}/signout-callback
, automaticSilentRenew: true, silent_redirect_uri:${environment.clientRoot}/silent-callback.html
, client_secret: environment.clientSecret, } }constructor() { this._userManager = new UserManager(this.idpSettings); }
public login = (returnUrl?: string) => { return this._userManager.signinRedirect(); }
public logout = () => { this._userManager.signoutRedirect(); }