AWS Cognito; ошибка unauthorized_client при нажатии / oauth2 / token - PullRequest
0 голосов
/ 10 мая 2018

Шаги, предпринятые до сих пор:

  • Настройка нового пула пользователей в cognito
  • Создать клиент приложения с без секрета ; давайте назовем его id user_pool_client_id
  • В настройках клиента пула пользователей для user_pool_client_id установите флажок «Пул пользователей Cognito», добавьте https://localhost в качестве обратного вызова и выйдите из URL, проверьте «Предоставление кода авторизации», «Неявное предоставление» и все в разделе «Разрешено». OAuth Scopes "
  • Создать доменное имя; давайте назовем это user_pool_domain

Создать нового пользователя с именем пользователя / паролем

Теперь я могу успешно перейти на:

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

Это открывает мне страницу входа в систему, и я могу войти как мой пользователь, который возвращает меня к https://localhost/?code={{code_uuid}}

Затем я попробую следующее: 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}}'

Однако, это просто возвращает следующее: {"error":"unauthorized_client"}

В конечной точке токена в документах указано, что unauthorized_client объясняется тем, что «Клиенту запрещен поток кода или обновляются токены». что сбивает с толку, потому что я установил флажки, позволяющие клиенту использовать поток предоставления кода.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Итак, получается, что у пула пользователей должна быть конечная косая черта (https://localhost/), а затем эта косая черта должна использоваться во всех URL-адресах обратного вызова. Тогда он решает работать!

0 голосов
/ 10 мая 2018

Все выглядит нормально для меня. Я думаю, что он может жаловаться на отсутствие заголовка авторизации, но не уверен. Вы можете попробовать несколько вещей:

1) Согласно этой странице (https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html), вам не нужно отправлять заголовок авторизации в запросе токена, но, возможно, он все еще необходим. Вы можете попробовать передать в него только идентификатор клиента ( Авторизация [идентификатор клиента]) или настройте секрет и попробуйте передать авторизацию [идентификатор клиента: секрет клиента], как говорится). Обычно в любом случае имеет смысл использовать секрет клиента для потока кода авторизации, поскольку в этом потоке есть компонент на стороне сервера, который может безопасно обрабатывать обмен токенами.

2) Попробуйте вместо этого использовать Implicit Flow, чтобы убедиться, что это работает. Неявный поток имеет смысл для одностраничных приложений без серверного компонента. Для этого секрет клиента не нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...