Steps taken so far:
- Set up new user pool in cognito
- Generate an app client with no secret; let's call its id
user_pool_client_id
- Under the user pool client settings for
user_pool_client_id
check the "Cognito User Pool" box, addhttps://localhost
as a callback and sign out url, check "Authorization Code Grant", "Implicit Grant" and everything under "Allowed OAuth Scopes" - Create a domain name; let's call it
user_pool_domain
Create a new user with a username/password
Now, I can successfully go to:
https://{{user_pool_domain}}.auth.us-east-2.amazoncognito.com/oauth2/authorize?response_type=code&client_id={{user_pool_client_id}}&redirect_uri=https%3A%2F%2Flocalhost
This presents me with a login page and I am able to login as my user which returns me to https://localhost/?code={{code_uuid}}
I then try the following:
curl -X POST https://{{user_pool_domain}}.auth.us-east-2.amazoncognito.com/oauth2/token -H 'Content-Type: application/x-www-form-urlencoded' -d 'grant_type=authorization_code&redirect_uri=https%3A%2F%2Flocalhost&code={{code_uuid}}&client_id={{user_pool_client_id}}'
However, this just returns back the following:
{"error":"unauthorized_client"}
The token endpoint docs say that unauthorized_client
is because "Client is not allowed for code grant flow or for refreshing tokens." which is confusing because I checked the boxes allowing the client to use the code grant flow.
redirect_uri
. Using localhost has never been a problem for me, but I do get this (rather misleading) error message whenever I omit the trailing slash on theredirect_uri
when calling thetoken
endpoint. Can you try adding%2F
to the end of theredirect_uri
? – Chatoyant