-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
state_not_found in 3.0.0-alpha.2 #6042
Comments
This indicates that sessionStorage is being cleared sometime between the redirect to the sign-in page and the invocation of handleRedirectObservable by the MsalRedirectComponent on return to your app. Can you check sessionStorage to confirm?
You're right, please don't share the contents of the hash fragment :) But you can enable logging by following the instructions here |
@tnorling I was using LocalStorage, not SessionStorage. Switching to session didn't make a difference. If I look in SessionStorage I see three items starting with msal. One ends with request.params, one with request.origin, and one with request.correlationId. Thanks for the log pointer. Which level should I provide? It's a ton right now because I have to enable the Preserve Log option in devtools since each redirect would clear the page and then error would get lost. |
Temporary storage values (which state is) are always stored in sessionStorage regardless of which option you choose to store your tokens. It's interesting that the other temporary values are there but state is missing...We'll need to understand if it fails to get set or was removed after the fact. LogLevel Trace is best as it will provide everything and then we can filter out what we don't need. And yes, preserve log is crucial here. |
Here's the log file with trace level set. |
I'm seeing a lot more calls to |
I'm also using the mgt components, so in my APP_INITIALIZE I also do this: Providers.globalProvider = new Msal2Provider({publicClientApplication}) I just commented that line out after your comment and I don't get those redirects any longer, but of course that then means those components break. In my package.json I refernce them like so: "@microsoft/mgt": "3.0.0-preview.2",
"@microsoft/mgt-mock-provider": "3.0.0-preview.2", |
Hmm I'm not super familiar with that package but it appears both you and the package are doing the right thing. You're passing in an already instantiated object, so I don't think that would be it unless mgt is somehow persisting this across pages. |
:( Suggestions on my next step? |
Ok new theory - When the This is the first time I'm seeing this specific issue so I'm not sure yet what the right solution is for these two packages to coexist. But I'll throw out a couple ideas for workarounds and I'll let you try them out and figure out what makes the most sense to you to unblock you for the time being until we discuss internally.
The purpose the MsalRedirectComponent is really just to ensure that applications are doing the initialization steps and handling the response from the redirect before attempting to use other features of the library, but since your other package is handling that for you, it may actually just be redundant in your case. |
Thank you! I left the |
Great to hear! I'll bring this up with the team and see if anyone can think of any reason not to make this our official recommendation when using graph toolkit going forward and will update our docs when we have consensus. Thanks and let us know if you run into any other issues! |
Core Library
MSAL.js v2 (@azure/msal-browser)
Core Library Version
3.0.0-alpha.2
Wrapper Library
MSAL Angular (@azure/msal-angular)
Wrapper Library Version
3.0.0-alpha.2
Public or Confidential Client?
Public
Description
When the app starts up now I'm getting an error about client auth state not being found. My startup (code below) is just calling
initialize
on the public client, and myAppComponent
extendsMsalRedirectComponent
. The route I'm calling includes theMsalGuard
in thecanActivate
.Error Message
ERROR Error: Uncaught (in promise): ClientAuthError: state_not_found: State not found: Cached State
ClientAuthError: state_not_found: State not found: Cached State
at ClientAuthError.createStateNotFoundError (:4200/vendor.js:16081:12)
at :4200/vendor.js:8865:79
at Generator.next ()
at asyncGeneratorStep (:4200/vendor.js:317888:24)
at _next (:4200/vendor.js:317907:9)
at :4200/vendor.js:317912:7
at new ZoneAwarePromise (:4200/polyfills.js:9120:21)
at :4200/vendor.js:317904:12
at RedirectHandler.handleCodeResponseFromHash (:4200/vendor.js:8902:7)
at :4200/vendor.js:7756:39
at resolvePromise (:4200/polyfills.js:8908:19)
at :4200/polyfills.js:8817:9
at :4200/polyfills.js:8833:25
at rejected (:4200/vendor.js:54578:9)
at _ZoneDelegate.invoke (:4200/polyfills.js:8107:158)
at Object.onInvoke (:4200/vendor.js:132100:25)
at _ZoneDelegate.invoke (:4200/polyfills.js:8107:46)
at Zone.run (:4200/polyfills.js:7890:35)
at :4200/polyfills.js:8968:28
at _ZoneDelegate.invokeTask (:4200/polyfills.js:8134:171)
Msal Logs
Not sure where to get the logs, but when it fails my browser redirects to a route that starts with
#code=
and includes query params of client_info, state and session_state. Not pasting them here as I don't know whether they contain info I wouldn't want made public.MSAL Configuration
Relevant Code Snippets
Reproduction Steps
I
provideAzure()
in the application bootstrap and when it starts up I'm now getting that cache error.Expected Behavior
no error :)
Identity Provider
Azure AD / MSA
Browsers Affected (Select all that apply)
Chrome
Regression
3.0.0-alpha.1
Source
External (Customer)
The text was updated successfully, but these errors were encountered: