fix: Token endpoint response for invalid_client #1481
+1
−1
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.
Fix RFC 6749 compliance: return
invalid_client
error for client authentication failures instead ofunauthorized_client
.This fixes #1480
Motivation and Context
The token endpoint returns incorrect error code when client authentication fails (wrong credentials, unknown client_id). Per RFC 6749 Section 5.2:
invalid_client
= Client authentication failedunauthorized_client
= Client authenticated successfully but not authorized for grant typeCurrent code incorrectly returns
unauthorized_client
when catchingAuthenticationError
, which represents authentication failure, not authorization failure.How Has This Been Tested?
Breaking Changes
Client would receive
invalid_client
instead ofunauthorized_client
with same http status code. Scenarios where client is changing its behavior based onerror_code
then breaking change is expected. If the client is already following RFC 6749 then it should not impact.Types of changes
Bug fix (non-breaking change which fixes an issue)
New feature (non-breaking change which adds functionality)
Breaking change (fix or feature that would cause existing functionality to change)
Documentation update
Checklist
Additional context
The implementation advertises:
token_endpoint_auth_methods_supported=["client_secret_post"]
This means clients authenticate by including credentials in the request body (form parameters), not via HTTP Basic Authentication.
The RFC states:
Since only form-based authentication (client_secret_post) is supported and no Authorization headers are processed, the HTTP 400 status code for the token endpoint should be acceptable.