fix(client_id): include options.client_id in authorized id_info[:aud] #119
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.
Summary
In the callback phase, when a
id_token
is present (which can be the case when signing in from a client-side application for example) theclient_id
used to verify the authorizationcode
is extracted from theid_token[:aud]
.The extracted
:aud
is then compared to theauthorized_client_ids
option and used if present in that list.This means that if no
authorized_client_ids
were provided in the middleware's configuration, despite there being aCLIENT_ID
, the callback will fail with ainvalid_client_id
error.A solution is to duplicate the client_id this way
But I find this to be highly non-intuitive.
Instead I include the
options.client_id
when validating the:aud
which solves the issue