0

J'ai une application iOS qui utilise Google SignIn et je souhaite authentifier AWS à l'aide de l'identifiant Google Token.AWS Google Connexion - Interrogation de l'accès à la base de données Dynamo refusé

J'ai créé des rôles dans IAM et Identity Pool dans Cognito. Lorsque j'essaie d'interroger une table dans Dynamo. Je reçois

'Not authorized to perform sts:AssumeRoleWithWebIdentity' 

J'ai la politique de confiance ayant mon numéro de client google,

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

Erreur

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 " 
)} 

Je veux comprendre pourquoi je reçois cette erreur et une solution pour corriger ce.

Répondre

0

Je vous recommande d'essayer l'Authentification améliorée, afin que Cognito fasse l'appel sts: AssumeRoleWithWebIdentity pour vous.

Référence à auth documentation flux ici: http://docs.aws.amazon.com/cognito/devguide/identity/concepts/authentication-flow/

Voici le flux de base Auth Cognito: GetId -> GetOpenIdToken (jeton ouvert Id de Cognito) -> AssumeRoleWithWebIdentity (passage de jeton ouvert ID Cognito).

Si vous créez votre pool d'identités dans la console AWS, les stratégies par défaut sont configurées pour fonctionner avec le flux amélioré ou le flux de base. Vous devez simplement ajouter une stratégie pour l'accès DynamoDB et pour les autres services que vous souhaitez intégrer.