web-dev-qa-db-fra.com

AWS: configuration de pool d'identités non valide. Vérifier les rôles IAM attribués pour ce pool

J'ai créé un pool d'utilisateurs et un pool d'identités.

J'ai utilisé le javascript sdk.

Je peux m'inscrire, envoyer un code de confirmation et confirmer l'utilisateur avec succès avec javascript sdk.

Mais lorsque j'essaye de me connecter, l'utilisateur utilise la méthode d'authentification et essaie d'obtenir des informations d'identification avec "CognitoIdentityCredentials" en passant idToken avec le code ci-dessous

logins[cognitoEndpoint + "/" + userPoolId] = jwtToken;

    AWS.config.credentials = new AWS.CognitoIdentityCredentials({
      IdentityPoolId: identityPoolId,
      Logins: logins
    });

ça me donne en dessous de l'erreur

Error: Invalid identity pool configuration. Check assigned IAM roles for this pool.
    at Request.extractError (aws-sdk.js:104063)
    at Request.callListeners (aws-sdk.js:106060)
    at Request.emit (aws-sdk.js:106034)
    at Request.emit (aws-sdk.js:105121)
    at Request.transition (aws-sdk.js:104843)
    at AcceptorStateMachine.runTo (aws-sdk.js:108480)
    at aws-sdk.js:108492
    at Request.<anonymous> (aws-sdk.js:104859)
    at Request.<anonymous> (aws-sdk.js:105123)
    at Request.callListeners (aws-sdk.js:106070)

J'ai donné à l'administrateur un accès au "rôle non authentifié" et au "rôle non authentifié" du pool d'identités et à l'utilisateur dont j'utilise les informations d'identification.

Je suis nouveau sur aws. Quelqu'un peut-il me dire ce qui me manque?

Toute aide serait appréciée.

25
Ankur Akvaliya

Vérifiez que le rôle que vous avez attribué dans Cognito Identity Pools (Federated Identities) a une relation d'approbation avec le pool d'identités.

Obtenez l'ID du pool d'identités + le nom du rôle qui ne fonctionne pas. Pour faire ça:

  • Allez à Cognito
  • Sélectionnez Gérer les identités fédérées
  • Sélectionnez le pool d'identité
  • Cliquez sur Modifier le pool d'identité (en haut à droite)
  • Notez l'ID du pool d'identités
  • Notez le nom du rôle qui ne fonctionne pas (par exemple, Cognito_blahUnauth_Role

Dans IAM, vérifiez la relation d'approbation pour le rôle. Assurez-vous que la valeur de la condition StringEquals correspond à l'ID du pool d'identités.

Pour faire ça:

  • Accéder à IAM
  • Cliquez sur Rôles
  • Cliquez sur le nom du rôle que vous avez noté précédemment
  • Cliquez sur Relations de confiance
  • À droite, sous Conditions, vérifiez que la condition StringEquals contient l'ID du pool d'identités que vous avez noté précédemment.

Modifiez la relation d'approbation à corriger.

51
Alex Hague

Ce que vous essayez d'accéder ici, ce sont les informations d'identification "Cognito Federated Identity", qui est un produit AWS distinct des "Pools d'utilisateurs Cognito". Afin de récupérer ces informations d'identification, vous devez connecter votre pool d'utilisateurs à votre pool d'identités fédérées.

Peut-être que ce lien vous aidera: http://docs.aws.Amazon.com/cognito/latest/developerguide/Amazon-cognito-integrating-user-pools-with-identity-pools.html

De plus, je supprimerais l'accès administrateur des autorisations non authentifiées, cela signifie que toute personne avec vos coordonnées a le contrôle de votre compte AWS.

2
David Kelley

Lorsque vous créez un rôle dans IAM et choisissez un fournisseur d'identité, assurez-vous de ne pas choisir l'ID de pool d'utilisateurs, mais plutôt de choisir l'ID de pool d'identités.

1
xwa130