Comment utiliser les groupes d'identités Amazon Cognito pour accorder aux utilisateurs l'accès aux services AWS ?

Lecture de 3 minute(s)
0

Je souhaite utiliser les groupes d'utilisateurs Amazon Cognito pour accorder aux utilisateurs l'accès aux ressources AWS.

Résolution

Vous pouvez intégrer des groupes d'identités Amazon Cognito à des groupes d'utilisateurs Amazon Cognito pour fournir des informations d'identification temporaires permettant d'accéder aux ressources AWS. Définissez un fournisseur d'authentification en configurant un groupe d'identités avec un groupe d'utilisateurs. Après avoir authentifié un utilisateur avec le groupe d'utilisateurs, utilisez le jeton d'identité utilisateur avec un flux d'authentification pour récupérer des informations d'identification temporaires depuis le groupe d'identités. Il existe un flux d'authentification de base et un flux d'authentification amélioré pour récupérer les informations d'identification temporaires.

Important : dans les exemples de commandes de l'interface de la ligne de commande AWS (AWS CLI) suivants, remplacez toutes les instances des exemples de chaînes par vos valeurs. (Par exemple, remplacez « example_identity_pool_id » par l'ID de votre groupe d'identités ou « abcdef » par l'ID d'identité de votre région AWS.)

Flux de base

Remarque : en cas d'erreurs lors de l'exécution de commandes depuis l'interface de la ligne de commande AWS (AWS CLI), vérifiez que vous utilisez la version la plus récente d'AWS CLI.

Procédez comme suit pour récupérer les informations d'identification AWS temporaires à l'aide du flux d'authentification de base :

1.    Dans l'ancienne console Amazon Cognito, sélectionnez Manage Identity Pools (Gérer les groupes d'identités). Sélectionnez le nom du groupe d'identités Amazon Cognito que vous mettez à jour, puis sélectionnez Edit identity pool (Modifier le groupe d'identités). Dans Authentication flow settings (Paramètres du flux d'authentification), sélectionnez Allow Basic (Classic) Flow (Autoriser le flux de base [classique]), puis enregistrez les modifications.

2.    Pour générer ou récupérer une identité d'utilisateur dans le groupe d'identités, appelez l'API GetID.

Exemple de commande get-id :

aws cognito-identity get-id --identity-pool-id "example_identity_pool_id" --logins cognito-idp.example_region.amazonaws.com/example_cognito_user_pool_id=example_cognito_user_id_token

Exemple de résultat :

{
    "IdentityId": "region:abcdef"
}

3.    Pour récupérer le jeton d'identification ouvert, utilisez le résultat de l'étape 2 pour appeler l'API GetOpenIdToken.

Exemple de commande get-open-id-token :

aws cognito-identity get-open-id-token --identity-id "region:abcdef" --logins cognito-idp.example_region.amazonaws.com/example_user_pool_id=example_cognito_user_id_token

Exemple de résultat :

{
    "IdentityId": "region:abcdef",
    "Token": "HIJKLMN"
}

4.    Pour récupérer les informations d'identification temporaires du rôle authentifié, utilisez le jeton obtenu lors de l'étape 3 pour appeler l'API AssumeRoleWithWebIdentity.

Exemple de commande assume-role-with-web-identity :

aws sts assume-role-with-web-identity --role-arn "example_auth_role_arn_of_the_identity_pool" --web-identity-token "HIJKLMN" --role-session-name "example_session_name"

Exemple de résultat :

{
    "Credentials": {
        AccessKeyId": "xxxxxxxxxxxx",
        SecretAccessKey": "xxxxxxxxxxxx",
        SessionToken": "xxxxxxxxxxxx",
        Expiration": ""
    },
    "SubjectFromWebIdentityToken": "",
    "AssumedRoleUser": {
        "AssumedRoleId": "",
        "Arn": ""
    },
    "Provider": "cognito-identity.amazonaws.com",
    "Audience": ""
}

Flux amélioré

Procédez comme suit pour récupérer les informations d'identification AWS temporaires à l'aide du flux d'authentification amélioré :

1.    Pour générer ou récupérer une identité d'utilisateur dans le groupe d'identités Amazon Cognito, appelez l'API GetId.

Exemple de commande get-id :

aws cognito-identity get-id --identity-pool-id "example_identity_pool_id" --logins cognito-idp.example_region.amazonaws.com/example_cognito_user_pool_id=example_cognito_user_id_token

Exemple de résultat :

{
    "IdentityId": "region:abcdef"
}

2.    Pour récupérer des informations d'identification temporaires depuis le groupe d'identités, appelez l'API GetCredentialsForIdentity.

Exemple de commande get-credentials-for-identity :

aws cognito-identity get-credentials-for-identity --identity-id region:abcdef --logins cognito-idp.example_region.amazonaws.com/example_cognito_user_pool_id = example_cognito_user_id_token

Exemple de résultat :

{
    "IdentityId": "region:abcdef",
    "Credentials": {
        "AccessKeyId": "xxxxxxxxxx",
        "SecretKey": "xxxxxxxxxx",
        "SessionToken": "xxxxxxxxxx",
        "Expiration": ""
    }
}

Pour en savoir plus sur les contrôles d'accès complexes basés sur les rôles et les contrôles d'accès complexes basés sur les attributs, reportez-vous à la section Contrôle précis des accès avec les groupes d'identités Amazon Cognito.


Informations connexes

Flux d'authentification des groupes d'identités (identités fédérées)

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an