No state in response after callback in oidc-client-js

10,927

Solution 1

It is caused by URI encoding of state in the window.location.hash. For me this fix the issue:

if (window.location.hash) {
window.location.hash = decodeURIComponent(window.location.hash);
// authorizedCallback returns wrong result when hash is URI encoded
this.oidcSecurityService.authorizedCallback();
} else {
this.oidcSecurityService.authorize();
}

Solution 2

If you are doing something custom like me and your issue has nothing to do with hash location, just ignore it:

  completeAuthentication(): Promise<void> {
    return this.manager.signinRedirectCallback().then(user => {
      this.user = user;
    }).catch((err) => {});
  }
Share:
10,927
Mike Anderson
Author by

Mike Anderson

I am a software Architect on .NETCORE stack.

Updated on June 26, 2022

Comments

  • Mike Anderson
    Mike Anderson almost 2 years

    I think this is an error related to angular 5.2.8 & 6 . With angular 5.2.7 work fine. I create a ng5 branch and update angular to latest 5.2.8 and the error com in! anybody can direct me to an angular 5.2.8 and later sample with oidc-client-js ?

  • penleychan
    penleychan about 6 years
    Thanks, window.location.hash = decodeURIComponent(window.location.hash); This is the line I needed.
  • ᴳᴿᴵᴹᴹ
    ᴳᴿᴵᴹᴹ about 4 years
    +1 for this, this is exactly what I initially did and this confirms it. I am using React with React-Router and for some reason the state is not read by the oidc-client.