Accès à des services AWS à l'aide d'un groupe d'identités après la connexion - Amazon Cognito

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Accès à des services AWS à l'aide d'un groupe d'identités après la connexion

Vous pouvez permettre à vos utilisateurs de se connecter à un groupe d'utilisateurs, puis d'accéder aux AWS services à l'aide d'un groupe d'identités.

Après une authentification réussie, votre application mobile ou web recevra d'Amazon Cognito des jetons de groupe d'utilisateurs. Vous pouvez utiliser ces jetons pour récupérer les AWS informations d'identification qui permettent à votre application d'accéder à d'autres AWS services. Pour de plus amples informations, veuillez consulter Démarrage avec les groupes d'identités Amazon Cognito (identités fédérées).


        Accès aux AWS informations d'identification via un groupe d'utilisateurs doté d'un pool d'identités

Pour plus d'informations sur l'utilisation de groupes d'identités avec des groupes de groupes d'utilisateurs pour contrôler l'accès à vos AWS ressources, consultez Ajout de groupes à un groupe d'utilisateurs etUtilisation du contrôle d'accès basé sur les rôles. Consultez également Concepts de groupes d'identités (identités fédérées) pour plus d'informations sur les pools d'identités et AWS Identity and Access Management.

Configuration d'un groupe d'utilisateurs à l'aide du AWS Management Console

Créez un groupe d'utilisateurs Amazon Cognito et prenez note des identifiants indiqués dans les champs User Pool ID (ID du groupe d'utilisateurs) et App Client ID (ID du client d'application) pour chacune de vos applications client. Pour plus d'informations sur la création de groupes d'utilisateurs, consultez Démarrage avec les groupes d'utilisateurs.

Configuration d'un pool d'identités à l'aide du AWS Management Console

La procédure suivante décrit comment utiliser le AWS Management Console pour intégrer un pool d'identités à un ou plusieurs groupes d'utilisateurs et applications clientes.

Pour ajouter un fournisseur d'identité (IdP) aux groupes d'utilisateurs Amazon Cognito
  1. Choisissez Groupes d'identités dans la console Amazon Cognito. Sélectionnez une réserve d'identités.

  2. Choisissez l'onglet Accès utilisateur.

  3. Sélectionnez Ajouter un fournisseur d'identité.

  4. Choisissez Groupe d'utilisateurs Amazon Cognito.

  5. Saisissez un ID de groupe d'utilisateurs et un ID de client d'application.

  6. Pour définir le rôle demandé par Amazon Cognito lorsqu'il délivre des informations d'identification aux utilisateurs qui se sont authentifiés auprès de ce fournisseur, configurez Paramètres de rôle.

    1. Vous pouvez attribuer aux utilisateurs de ce fournisseur d'identité le rôle par défaut que vous avez configuré lorsque vous avez configuré votre rôle authentifié, ou vous pouvez sélectionner Choisir un rôle avec des règles. Avec un fournisseur d'identité de groupe d'utilisateurs Amazon Cognito, vous pouvez également sélectionner Choisir le rôle avec l'enregistrement preferred_role dans les jetons. Pour plus d'informations sur le champ standard cognito:preferred_role, consultez Affectation de valeurs de priorité à des groupes.

      1. Si vous avez choisi Choisir un rôle avec des règles, saisissez la demande source issue de l'authentification de votre utilisateur, l'opérateur avec lequel vous souhaitez comparer ce champ standard, la valeur qui entraînera une correspondance avec ce choix de rôle et le rôle que vous souhaitez attribuer si l'attribution de rôle correspond. Sélectionnez Ajouter un autre pour créer une règle supplémentaire basée sur une condition différente.

      2. Si vous avez choisi Choisir le rôle avec l'enregistrement preferred_role dans les jetons, Amazon Cognito délivrera les informations d'identification correspondant au rôle indiqué dans l'enregistrement cognito:preferred_role de votre utilisateur. Si aucun enregistrement de rôle préféré n'est présent, Amazon Cognito émet des informations d'identification en fonction de la Résolution du rôle.

      3. Choisissez une résolution de rôle. Lorsque les champs standard de votre utilisateur ne correspondent pas à vos règles, vous pouvez refuser les informations d'identification ou émettre des informations d'identification pour votre rôle authentifié.

  7. Pour modifier les balises de principal qu'Amazon Cognito attribue lorsqu'il délivre des informations d'identification aux utilisateurs qui se sont authentifiés auprès de ce fournisseur, configurez Attributs de contrôle d'accès.

    1. Pour n'appliquer aucune balise de principal, choisissez Inactif.

    2. Pour appliquer les balises de principal en fonction des champs standard sub et aud, choisissez Utiliser les mappages par défaut.

    3. Pour créer votre propre schéma personnalisé d'attributs pour les balises de principal, choisissez Utiliser des mappages personnalisés. Saisissez ensuite une clé de balise que vous souhaitez obtenir à partir de chaque demande que vous souhaitez représenter dans une balise.

  8. Sélectionnez Enregistrer les modifications.

Intégration d'un groupe d'utilisateurs à un groupe d'identités

Une fois que l'utilisateur de l'application est authentifié, ajoutez son jeton d'identité à la carte de connexions dans le fournisseur d'informations d'identification. Le nom de ce fournisseur dépend de l'ID du groupe d'utilisateurs Amazon Cognito. Sa structure est la suivante :

cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>

Vous pouvez déduire la valeur <region>de l'ID du groupe d'utilisateurs. Par exemple, si l'ID du groupe d'utilisateurs estus-east-1_EXAMPLE1, alors le <region>estus-east-1, et si l'ID du groupe d'utilisateurs estus-west-2_EXAMPLE2, c'<region>est le casus-west-2.

JavaScript
var cognitoUser = userPool.getCurrentUser(); if (cognitoUser != null) { cognitoUser.getSession(function(err, result) { if (result) { console.log('You are now logged in.'); // Add the User's Id Token to the Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'YOUR_IDENTITY_POOL_ID', Logins: { 'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>': result.getIdToken().getJwtToken() } }); } }); }
Android
cognitoUser.getSessionInBackground(new AuthenticationHandler() { @Override public void onSuccess(CognitoUserSession session) { String idToken = session.getIdToken().getJWTToken(); Map<String, String> logins = new HashMap<String, String>(); logins.put("cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>", session.getIdToken().getJWTToken()); credentialsProvider.setLogins(logins); } });
iOS - objective-C
AWSServiceConfiguration *serviceConfiguration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:nil]; AWSCognitoIdentityUserPoolConfiguration *userPoolConfiguration = [[AWSCognitoIdentityUserPoolConfiguration alloc] initWithClientId:@"YOUR_CLIENT_ID" clientSecret:@"YOUR_CLIENT_SECRET" poolId:@"YOUR_USER_POOL_ID"]; [AWSCognitoIdentityUserPool registerCognitoIdentityUserPoolWithConfiguration:serviceConfiguration userPoolConfiguration:userPoolConfiguration forKey:@"UserPool"]; AWSCognitoIdentityUserPool *pool = [AWSCognitoIdentityUserPool CognitoIdentityUserPoolForKey:@"UserPool"]; AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"YOUR_IDENTITY_POOL_ID" identityProviderManager:pool];
iOS - swift
let serviceConfiguration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: nil) let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", poolId: "YOUR_USER_POOL_ID") AWSCognitoIdentityUserPool.registerCognitoIdentityUserPoolWithConfiguration(serviceConfiguration, userPoolConfiguration: userPoolConfiguration, forKey: "UserPool") let pool = AWSCognitoIdentityUserPool(forKey: "UserPool") let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YOUR_IDENTITY_POOL_ID", identityProviderManager:pool)