web-dev-qa-db-fra.com

Configuration du pool d'identités AWS Cognito non valide

J'utilise l'API Javascript AWS et j'essaie d'obtenir l'ID cognito attribué:

AWS.config.credentials.get(function(err) {
    if (!err) {
        console.log("Cognito Identity Id: " + AWS.config.credentials.identityId);
    }
});

Pourquoi cela entraîne-t-il une erreur 400 avec le message ci-dessous?

{"__type":"InvalidIdentityPoolConfigurationException","message":"Invalid identity pool configuration. Check assigned IAM roles for this pool."}

J'ai des rôles IAM configurés pour des utilisateurs authentifiés et non authentifiés.

{
"Version": "2012-10-17",
"Statement": [{
    "Action": [
        "mobileanalytics:PutEvents",
        "cognito-sync:*"
    ],
    "Effect": "Allow",
    "Resource": [
        "*"
    ]
}]
}
13
drfence

La raison la plus courante de cette erreur est que vos rôles ne sont pas configurés pour faire confiance à votre pool d'identités. Vous devez vérifier que l'id du pool d'identités indiqué dans vos relations de confiance correspond au pool d'identités que vous utilisez.

Pour plus d'informations sur les relations de confiance dans Amazon Cognito, consultez notre guide du développeur .

33
Bob Kinney

Après quelques recherches, je me suis rendu compte que vous deviez ajouter le RoleArn et le AccountId à vos informations d'identification.

Même si la plupart de la documentation la mentionne comme suffisante:

AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'us-east-1:xxxxx-a87e-46ed-9519-xxxxxxx',
});

Cela ne suffisait pas. 

Je devais faire ceci:

AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'us-east-1:xxxxx-a87e-46ed-9519-xxxxx',
    RoleArn: 'arn:aws:iam::xxxxx:role/Cognito_xxxxUsersUnauth_Role',
    AccountId: 'xxxxxxxxx', // your AWS account ID
});

Vous devez mentionner l'ARN de votre rôle pour votre pool d'identités.

Le seul document qui mentionne ce droit est celui-ci .

Les faux:

Peut-être que je manque quelque chose mais c'est certainement déroutant.

21
koxon

Vérifiez la section "Relation d'approbation" du rôle attribué à votre groupe d'identités, utilisateurs d'authentification. Assurez-vous que vous avez des stratégies définissant l'accès à votre pool Cognito.

Le moyen le plus simple d’obtenir les déclarations de stratégie des exigences est, 

  1. Editer le pool
  2. Créer un nouveau rôle pour le pool d'identités
  3. Dans IAM, modifiez ce rôle pour copier les déclarations de stratégie.
  4. Ajoutez ces relations de confiance à votre rôle existant requis 
2
Jerome Anthony

J'ai vérifié la relation d'approbation de mes rôles configurés pour "Rôle authentifié" et "Rôle non authentifié" pour mon pool d'identités plus d'une fois, mais l'erreur est toujours survenue .

  • Fournisseurs d'authentification
    • Cognito
      • Sélection de rôle authentifié

J'ai choisi "Choisir le rôle du jeton" et mon rôle mal configuré est celui que j'ai attaché au groupe cognito pour mes utilisateurs . La mise à jour de la relation d'approbation pour ce rôle a donc résolu le problème.

J'espère que ça aide quelqu'un :)

0
Stefan M.

J'ai rencontré cette erreur et mon problème était que mon utilisateur assumait un rôle non authentifié car je retournais AWSTask (result: nil) à partir de la fonction logins () dans mon CognitoDeveloperIdentityProvider personnalisé.

0
Regular User