I am trying to implement oidc-client-ts in my angular app. I have 2 applications:
- login app
- other app with authorized access
Almost everything works fine:
- login (code flow)
- SSO
- silent renew (iframe)
But I have problem with single sign out when app is open in more than one tab in browser. When I log out in one, other tab stays logged in.
Session monitor perform silent renew after auth cookies are removed, but user manager in app should invoke some callback so app can react to error in silent refresh:
http://localhost:8081/token/silent/?error=login_required&error_description=login%20required&state=XYZ
silent-renew.html:
<script src="oidc-client-ts.js"></script>
<script>
var mgr = new oidc.UserManager({ response_mode: 'query' });
mgr.signinSilentCallback().catch(error => {
console.error(error);
});
</script>
template contains session iframe
...
<iframe width="0" height="0" src="<auth server>" style="visibility: hidden; position: fixed; left: -1000px; top: 0px;"></iframe>
I expect that some event is raised when silent refresh fails, but there is none console log:
this.userManager.events.addSilentRenewError(err => {
console.log('SILENT RENEW ERROR');
});
this.userManager.events.addUserSessionChanged(() => {
console.log('SESSION CHANGED');
});
this.userManager.events.addUserSignedOut(() => {
console.log('SIGNED OUT');
});