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.