AWS Cognito getId "Неверный токен для входа. Эмитент не совпадает с providerName" - PullRequest
0 голосов
/ 20 января 2020

Я прошел аутентификацию в пуле пользователей Cognito, используя API «InitiateAuth», и получил токен идентификатора:

{
   sub: "8aec..." ,
   aud:"2gr0fdlr647skqqghtau04vuct",
   iss:"https://cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q",
   ....
}

Затем я пытаюсь получить идентификатор через API «GetId»:

{
   AccountId: "345745834314"
   IdentityPoolId: "us-east-1:fb4d5209-33b1-46e2-923a-8aa206d5c7aa"
   Logins: {
      "cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q": "eyJr...." 
   }
}

Я настроил пул удостоверений и правильно установил пул пользователей Cognito в качестве поставщика. Но я всегда получаю обратно форму ответа getId:

"Неверный токен для входа. Эмитент не совпадает с имя_поставщика"

Я также попытался изменить имя провайдера в списке логинов на:

https://cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q

, поэтому он точно соответствует токену в поле iss, но это не решает проблему, но сообщение о том, что эмитент не соответствует провайдеру, остается тем же. имя.

Есть идеи, что я здесь не так делаю?

1 Ответ

0 голосов
/ 21 января 2020

Хорошо, понял, на самом деле есть дополнительный набор кавычек вокруг имени провайдера: "cognito-idp.us-east-1.amazon aws .com / us-east-1_LzM42GX6Q"

В консоли разработчика отображаются:

{
   AccountId: "345745834314"
   IdentityPoolId: "us-east-1:fb4d5209-33b1-46e2-923a-8aa206d5c7aa"
   Logins: {
      "cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q": "eyJr...." 
   }

}

Которые имеют только кавычки вокруг имени провайдера, но не другие поля, что вызвало у меня подозрения. Я нажал «Просмотреть исходный код», чтобы увидеть фактическое json отправлено, и это было так:

"\"cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q\""

Я удалил лишние кавычки, и это работает.

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