compat fix: PKCE loadMeta will fallback to local storage #399
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This fixes an error involving PKCE flow and the signin widget. In version 3.1.2 of
okta-auth-js
the PKCE meta storage was changed to use sessionStorage. However, current and older versions of the signin widget which are bundled with an older version ofokta-auth-js
will store the PKCE meta in local storage. This will cause an error: The redirectUri passed to /authorize must also be passed to /token on callback. The underlying cause is that PKCE meta was not found in storage and an empty codeVerifier was passed to the/token
endpoint.This PR adds logic to read from local storage if the meta cannot be found in session storage. This will provide compatibility for older versions of
okta-auth-js
including the bundled version within the signin widget.Additionally, this PR adds logic so that if the meta cannot be found in either session or local storage, an error will be thrown. This will avoid making a call to
/token
with an empty codeVerifier which causes the misleading error about "redirectUri"