AWS Cognito; unauthorized_client error when hitting /oauth2/token
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
AWS Cognito unauthorized_client
Error During /oauth2/token
Endpoint Access
AWS Cognito is a powerful service by Amazon Web Services that enables developers to securely manage user sign-up, sign-in, and access control. It provides several features to authenticate users through social identity providers like Facebook, Google, Amazon, and with enterprise identity providers via SAML 2.0 and OpenID Connect. However, one common error developers encounter when working with AWS Cognito is the unauthorized_client
error while accessing the /oauth2/token
endpoint. This article explores this error in detail, its causes, and potential resolutions.
Understanding the /oauth2/token
Endpoint
The /oauth2/token
endpoint in AWS Cognito is utilized to obtain tokens (ID token, access token, and refresh token) after an user has been authenticated. This process is a part of the OAuth 2.0 authorization framework, which includes steps like obtaining an authorization code and exchanging it for an access token.
The unauthorized_client
Error
The unauthorized_client
error occurs when the client application (your app) attempts to use the /oauth2/token
endpoint improperly or when it lacks the necessary configuration to perform the token exchange. The error signals a misconfiguration issue, either on the client or on the Cognito user pool side.
Common Reasons for the Error
- Client ID/Secret Mismatch:
- Ensure that the client ID and client secret used are correct and correspond to the App Client configured in the Cognito User Pool. These credentials are crucial for authorization.
- Missing Allowed Grant Type:
- The App Client's configuration may not include the necessary authorization grants, such as the
authorization_codegrant. This can be verified and updated in the Cognito User Pool under App client settings.
- URLs Not Whitelisted:
- The Redirect and Callback URLs need to be whitelisted under App client settings. Incorrect or missing URLs can lead to authentication issues.
- App Client Not Enabled:
- Ensure that the App Client is enabled in the Cognito configuration. If disabled, any attempt to use its credentials will naturally be unauthorized.
Examples and Resolution Steps
Example Scenario
Consider an application where, after user authentication, you attempt to exchange the authorization code for tokens by calling the /oauth2/token
endpoint using the following cURL command:
- Double-check the
client_idandclient_secretagainst the values defined in the Cognito User Pool App Client settings. - Navigate to the AWS Cognito console, open your User Pool, and go to App client settings. Ensure the
authorization_codegrant is enabled. - Navigate to App client settings in the Cognito console and verify the listed Redirect and Callback URLs.
- Use CloudWatch or similar monitoring tools to track authentication flows and error logs for additional debugging information.
Related reading
- AWS Cognito User Pool without a password
- AWS Cognito username/email login is case-sensitive
- AWS cognito What's the difference between Access and Identity tokens?
- AWS Cognito's SMS Multi Factor Authentication returns invalid code or auth state
- AWS Custom SSL certificate option is disabled in CloudFront, but I created a SSL certificate using AWS Certificate Manager
- AWS EC2 'You are not authorized to perform this operation. Encoded authorization failure message
- AWS Configure Bash One Liner
- AWS Content Type Settings in S3 Using Boto3

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.