Accès à Services AWS l'aide d'un pool 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 à Services AWS l'aide d'un pool d'identités après la connexion

Une fois que vos utilisateurs se sont connectés à un groupe d'utilisateurs, ils peuvent y accéder à l' Services AWS aide API d'informations d'identification temporaires émises par un groupe d'identités.

Votre application Web ou mobile reçoit des jetons provenant d'un groupe d'utilisateurs. Lorsque vous configurez votre groupe d'utilisateurs en tant que fournisseur d'identité pour votre groupe d'identités, le groupe d'identités échange des jetons contre des AWS informations d'identification temporaires. Ces informations d'identification peuvent être associées à IAM des rôles et à leurs politiques qui permettent aux utilisateurs d'accéder à un ensemble limité de AWS ressources. Pour de plus amples informations, veuillez consulter Flux d'authentification des groupes d'identités.

Le schéma suivant montre comment une application se connecte à un groupe d'utilisateurs, récupère les informations d'identification du pool d'identités et demande un actif à un Service AWS.

Schéma de flux d'une application qui s'authentifie auprès d'un groupe d'utilisateurs Amazon Cognito et autorise l'accès AWS aux ressources via un groupe d'identités.

Vous pouvez utiliser les informations d'identification du pool d'identités pour :

  • Soumettez des demandes d'autorisation détaillées à Amazon Verified Permissions avec les informations d'identification de votre utilisateur.

  • Connectez-vous à un Amazon API Gateway REST API ou à un AWS AppSync GraphQL API qui autorise les connexions avec. IAM

  • Connectez-vous à un backend de base de données tel qu'Amazon DynamoDB RDS ou Amazon qui autorise les connexions avec. IAM

  • Récupérez les ressources de l'application depuis un compartiment Amazon S3.

  • Lancez une session avec un bureau WorkSpaces virtuel Amazon.

Les groupes d'identités ne fonctionnent pas exclusivement au sein d'une session authentifiée avec un groupe d'utilisateurs. Ils acceptent également l'authentification directement auprès de fournisseurs d'identité tiers et peuvent générer des informations d'identification pour les utilisateurs invités non authentifié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. En outre, pour plus d'informations sur les pools d'identités et AWS Identity and Access Management, voirFlux d'authentification des groupes d'identités.

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 cet IdP le rôle par défaut que vous avez défini lorsque vous avez configuré votre rôle authentifié, ou vous pouvez 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, entrez la réclamation source issue de l'authentification de votre utilisateur, l'opérateur que vous souhaitez utiliser pour comparer la réclamation à la règle, la valeur qui provoquera une correspondance avec ce choix de rôle et le rôle que vous souhaitez attribuer lorsque l'attribution du 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 Choose role with preferred_role claim in tokens, Amazon Cognito émet des informations d'identification pour le rôle indiqué dans la réclamation de votre utilisateur. cognito:preferred_role 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.

    2. 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.

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

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

    • 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 de <region> à partir de l'ID du groupe d'utilisateurs. Par exemple, si l'ID du groupe d'utilisateurs estus-east-1_EXAMPLE1, alors <region> estus-east-1. Si l'ID du groupe d'utilisateurs estus-west-2_EXAMPLE2, alors <region> estus-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)