0

У меня есть приложение iOS, которое использует Google SignIn, и я хочу пройти аутентификацию AWS с помощью Google Token ID.AWS Google Войти - Query Denamo DB Access Denied Error

Я создал роли в IAM и Identity Pool в Cognito. Когда я пытаюсь запросить таблицу в Dynamo. Я получаю

'Not authorized to perform sts:AssumeRoleWithWebIdentity' 

У меня есть доверенная политика, имеющая свой Google идентификатор клиента,

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "", 
     "Effect": "Allow", 
     "Principal": { 
     "Federated": "accounts.google.com" 
     }, 
     "Action": "sts:AssumeRoleWithWebIdentity", 
     "Condition": { 
     "StringEquals": { 
     "accounts.google.com:aud": #mygoogleclientid# 
    } 
    } 
} 
]} 

Ошибка

Error: Error Domain=com.amazonaws.AWSSTSErrorDomain Code=0 "(null)" UserInfo= 
    { 
    Type=Sender, 
    Message=Not authorized to perform sts:AssumeRoleWithWebIdentity, 
    Code=AccessDenied, __text=(
    "\n ", 
    "\n ", 
    "\n ", 
    "\n " 
)} 

Я хочу понять, почему я получаю эту ошибку и решение исправить это.

ответ

0

Я бы рекомендовал вам попробовать Enhanced Authflow, так что Cognito сделает вызов sts: AssumeRoleWithWebIdentity для вас.

Ссылка на Идент документацию потока здесь: http://docs.aws.amazon.com/cognito/devguide/identity/concepts/authentication-flow/

Вот Cognito в Basic Auth поток: GetId -> GetOpenIdToken (Cognito Открытых Id лексемы) -> AssumeRoleWithWebIdentity (прохождение Open Id Cognito маркер).

Если вы создаете свой пул идентификаторов в консоли AWS, политики по умолчанию настраиваются для работы с расширенным потоком или базовым потоком. Вам просто нужно добавить политику для доступа к DynamoDB и для других сервисов, с которыми вы хотите интегрироваться.

Смежные вопросы