Exemple d'application pour les pools d'identités - 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.

Exemple d'application pour les pools d'identités

Le cas d'utilisation le plus courant des pools d'identités Amazon Cognito consiste à fédérer les utilisateurs de plusieurs systèmes de connexion et à fournir des informations d'identification temporaires à accès limité directement AWS au client. Il n'est donc plus nécessaire de créer un courtier d'informations d'identification pour obtenir les autorisations d'accès à vos AWS ressources. Par exemple, vous devrez peut-être autoriser les utilisateurs à se connecter avec leurs comptes de réseaux sociaux et à accéder aux ressources de l'application depuis Amazon S3 pour votre application mobile. Les groupes d'identités fournissent également des informations d'identification aux utilisateurs qui se connectent à des groupes d'utilisateurs.

Dans ce didacticiel, vous allez créer une application Web dans laquelle vous pouvez obtenir des informations d'identification temporaires authentifiées et invitées dans les flux d'authentification avancés et de base avec les fournisseurs d'identité pris en charge (IdPs) dans les pools d'identités. Si vous avez déjà de l'expérience dans le développement Web, téléchargez l'exemple d'application sur GitHub.

Téléchargez l'exemple d'application sur GitHub

Cet exemple d'application illustre les fonctionnalités suivantes des pools d'identités Amazon Cognito :

Flux d'authentification dans les pools d'identités
  • Flux d'authentification amélioré avec une ventilation détaillée des demandes d'API

  • Flux d'authentification de base avec ventilation détaillée des demandes d'API

Implémentation de l'accès invité (non authentifié)
  • Offrez un Service AWS accès limité sans avoir à vous connecter

Intégration avec les fournisseurs d'identité pris en charge
  • Réseaux sociaux IdPs (Facebook, Amazon, Twitter, Apple et Google) pour l'accès des consommateurs

  • Enterprise IdPs (via OpenID Connect ou SAML) pour les utilisateurs professionnels

  • Groupes d'utilisateurs Amazon Cognito

AWS gestion des informations d'identification
  • Échange de jetons de fournisseur d'identité contre des AWS informations d'identification temporaires

  • Utilisation d'informations d'identification temporaires pour accéder aux AWS services en toute sécurité

Une fois que vous avez configuré l'application sur votre serveur Web de développement et que vous y avez accédé dans un navigateur, les options suivantes s'affichent.

Capture d'écran de l'interface Web de l'application de démonstration du pool d'identités Amazon Cognito montrant la page principale avec les options de méthode d'authentification et les sections de démonstration interactives.

Prérequis

Avant de commencer, vous devez configurer les ressources suivantes.

  • Un AWS compte avec accès à Amazon Cognito. Si vous n'avez pas de AWS compte, suivez les instructions figurant dansCommencer avec AWS.

  • Python 3.8 ou version ultérieure installé sur votre machine de développement.

  • GitHub accès.

  • AWS informations d'identification configurées avec des autorisations permettant d'envoyer des demandes authentifiées à Amazon APIs Cognito. Ces informations d'identification sont requises pour l'authentification des développeurs.

Pour plus d'informations sur la mise en œuvre des AWS informations d'identification et de la fédération du pool d'identités dans votre SDK spécifique, consultezObtention des informations d'identification.

Configuration du fournisseur d'authentification

Pour de meilleurs résultats avec cette application, configurez et intégrez un ou plusieurs fournisseurs d'identité tiers (IdPs) ou groupes d'utilisateurs Amazon Cognito à votre groupe d'identités Amazon Cognito. Après avoir rempli les conditions requises et avant d'exécuter cette application de démonstration, choisissez les fournisseurs d'identité à configurer. La console Amazon Cognito vous guide tout au long du processus de configuration des groupes d'identités et des fournisseurs.

Note

Pour cette application de démonstration, il n'est pas nécessaire de configurer tous les fournisseurs d'identité pris en charge. Vous pouvez commencer par celui qui correspond à votre cas d'utilisation. Chaque lien fournit des instructions de configuration détaillées.

Déployer l'application de démonstration

Cloner le référentiel

  1. Ouvrez une fenêtre du terminal.

  2. Clonez le aws-doc-sdk-examples dépôt ou récupérez ce dossier dans le dépôt.

    git clone https://github.com/awsdocs/aws-doc-sdk-examples.git
  3. Accédez au répertoire du projet .

    cd python/example_code/cognito/scenarios/identity_pools_example_demo/web

Créer un groupe d’identités

Pour créer un pool d'identités Amazon Cognito pour votre application, suivez les instructions figurant dans. Présentation de la console des pools d'identités

Pour configurer un pool d'identités pour l'application de démonstration
  1. Ouvrez la console Amazon Cognito.

  2. Dans le menu de navigation de gauche, choisissez Identity pools. Choisissez un pool d'identités existant ou créez-en un nouveau.

  3. Sous Accès utilisateur, activez Accès authentifié et Accès invité. Configurez un rôle IAM nouveau ou existant et attribuez-lui les autorisations que vous souhaitez accorder à chaque type d'utilisateur.

  4. Sous Accès utilisateur, configurez les fournisseurs d'identité que vous souhaitez configurer.

  5. Sous Propriétés du pool d'identités, activez l'authentification de base (classique).

  6. Gardez votre navigateur ouvert à la console de votre pool d'identités. Vous utiliserez l'ID du pool d'identités et d'autres informations de configuration lors de la configuration de votre application.

Configuration et exécution de l'application

Les étapes suivantes vous guident dans la configuration initiale de votre application de démonstration.

Pour configurer l'application de démonstration
  1. Ouvrez une ligne de commande python/example_code/cognito/scenarios/identity_pools_example_demo/web dans votre aws-doc-sdk-examples clone.

  2. Créez un .env fichier en copiant le fichier d'environnement d'exemple.

    cp .env.example .env
  3. Ouvrez le fichier .env dans un éditeur de texte. Remplacez les valeurs d'exemple du fichier par vos propres valeurs de configuration.

  4. Installez les dépendances du backend.

    pip install -r requirements.txt
  5. Démarrez le serveur principal :

    cd backend python oauth_server.py
  6. Ouvrez une nouvelle fenêtre de terminal, accédez au répertoire du projet et démarrez le serveur frontal :

    cd frontend python -m http.server 8001
  7. Ouvrez votre navigateur pour accéder à l'application à l'adresse http://localhost:8001. Votre navigateur affichera l'interface de l'application de démonstration, prête à tester l'authentification des groupes d'identités.

Explorez les méthodes d'authentification de votre pool d'identités

Cette section vous guide à travers les flux d'authentification de base et améliorés à l'aide de l'application de démonstration des pools d'identités Amazon Cognito. Dans cette démonstration, vous découvrirez comment les pools d'identités fonctionnent avec différents fournisseurs d'identité pour fournir des AWS informations d'identification temporaires aux utilisateurs de votre application.

Dans la section de démonstration interactive de l'exemple d'application, vous devez d'abord choisir entre deux types d'accès pris en charge par les pools d'identités.

Accès non authentifié (invité)

Fournissez des AWS informations d'identification aux utilisateurs qui ne se sont pas encore authentifiés.

Accès authentifié

Échangez des jetons de fournisseur d'identité contre des informations d' AWS identification avec un éventail complet d'autorisations disponibles. Choisissez un fournisseur d'identité parmi ceux que vous avez configurés dans votre .env fichier.

Cette étape montre comment obtenir des informations d' AWS identification temporaires pour les utilisateurs non authentifiés (invités) par le biais de la fonctionnalité d'accès invité de votre pool d'identités. Dans l'application de démonstration, vous allez tester à la fois des flux améliorés et des flux de base pour voir comment les pools d'identités délivrent des informations d'identification sans nécessiter la connexion de l'utilisateur. L'accès invité utilise la même séquence d'API que l'accès authentifié, mais sans fournir de jetons de fournisseur d'identité (tels que OAuth des jetons de Google, de Facebook ou des assertions SAML provenant de fournisseurs d'entreprise).

Poursuivez votre lecture si vous recherchez des informations sur la façon de fournir un AWS accès limité aux utilisateurs sans nécessiter d'authentification. Après avoir implémenté l'accès invité, vous apprendrez à fournir en toute sécurité des AWS informations d'identification aux utilisateurs anonymes et à comprendre les différences entre les deux flux d'authentification.

Important

Un accès non authentifié peut délivrer des informations d'identification à toute personne ayant accès à Internet. Il est donc préférable de l'utiliser pour les AWS ressources nécessitant un minimum de sécurité, telles que les ressources publiques APIs et graphiques. Avant de procéder à cette étape, vérifiez si vous avez configuré votre pool d'identités avec l'accès invité activé et assurez-vous que des politiques IAM appropriées sont en place pour limiter les autorisations.

Guest access with enhanced flow

Le flux amélioré est une approche rationalisée permettant d'obtenir des AWS informations d'identification pour les utilisateurs non authentifiés avec deux demandes d'API.

Pour tester l'accès des invités avec le flux amélioré
  1. Dans l'application de démonstration, accédez à la section Démo interactive

  2. Choisissez l'onglet Accès invité.

  3. Choisissez l'onglet Flux amélioré.

  4. Choisissez Tester l'accès invité.

  5. L'application obtient des AWS informations d'identification temporaires à partir de vos pools d'identités sans invite d'authentification supplémentaire.

  6. Une fois l'authentification réussie, vous verrez l'interface Web afficher le panneau Résultats, et deux options s'offrent à vous pour les explorer :

    1. Bouton Afficher les informations d'identification uniquement : cliquez sur ce bouton si vous souhaitez voir directement les AWS informations d'identification temporaires générées sans les détails du flux d'API.

      { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......", "Expiration": "2025-08-07T00:58:21-07:00" } }
    2. Bouton Afficher le flux d'API détaillé : cliquez sur ce bouton si vous souhaitez voir les demandes step-by-step d'API.

      • GetId()Demande d'API auprès de votreidentityPoolId. Aucun jeton d'authentification requis pour l'accès invité

        { "IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }

        S'il est valide, il trouve ou crée et renvoie celui de l'utilisateurIdentityID. Voici un exemple de réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }
      • GetCredentialsForIdentity()avec le retouridentityPoolId.

        POST GetCredentialsForIdentity { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }

        Cognito valide l'accès invité, assume le rôle non authentifié en interne avec AWS STS et renvoie les informations d'identification AWS temporaires. (Aucune authentification IAM pour cet appel ; la confiance dans les rôles doit être autoriséecognito-identity-amazonzaws.com.)

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......", "Expiration": "2025-08-07T00:58:21-07:00" } }
Guest access with basic flow

Le flux de base fournit un contrôle granulaire du processus d'authentification avec des demandes d'API distinctes pour la récupération d'identité et la génération d'informations d'identification.

Pour tester l'accès des invités avec le flux de base
  1. Dans l'application de démonstration, accédez à la section Démo interactive

  2. Choisissez l'onglet Accès invité.

  3. Choisissez l'onglet Flux de base.

  4. Choisissez Tester l'accès invité.

  5. L'application obtient des AWS informations d'identification temporaires à partir de vos pools d'identités sans invite d'authentification supplémentaire.

  6. Une fois l'authentification réussie, vous verrez l'interface Web afficher le panneau Résultats, et vous avez deux options pour les explorer.

    1. Bouton Afficher les informations d'identification uniquement : cliquez sur ce bouton si vous souhaitez voir directement les AWS informations d'identification temporaires générées sans les détails du flux d'API.

      { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......", "Expiration": "2025-08-12T13:36:17-07:00" } }
    2. Bouton Afficher le flux d'API détaillé : cliquez sur ce bouton si vous souhaitez voir les demandes step-by-step d'API.

      • GetId()Demande d'API avec l'ID de votre pool d'identités. Aucun jeton d'authentification n'est requis pour l'accès invité.

        POST GetId { "IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }

        S'il est valide, il trouve ou crée et renvoie celui de l'utilisateurIdentityID. Voici un exemple de réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222" }
      • GetOpenIdToken()avec la Logins carte renvoyée IdentityID et la même

        POST GetOpenIdToken { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222" }

        Réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Token": "eyJraWQiOiJFWAMPLE......" }

        Que se passe-t-il à cette étape : Amazon Cognito émet un jeton d'identité Web OpenID Connect de courte durée à partir de cognito-identity.amazonaws.com qui le représente. IdentityId Le jeton inclut des demandes OIDC qui AWS STS évaluent, notamment aud (votre identifiant de pool d'identités) et amr (authentifié ou non authentifié). La politique de confiance de votre rôle IAM doit exiger ces réclamations.

      • AssumeRoleWithWebIdentity()- Votre application appelle AWS STS directement pour échanger le jeton Amazon Cognito OpenID contre des informations d'identification temporaires AWS

        POST sts:AssumeRoleWithWebIdentity { "RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolUnauth_Role", "WebIdentityToken": "eyJraWQiOiJFWAMPLE......" }

        Réponse :

        { "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "FwoGZXIvYXdzEEXAMPLE......" } }

        Que se passe-t-il à cette étape : une fois validée : renvoie des AWS informations d'identification temporaires

Utiliser les informations d'identification temporaires

Ces informations d'identification temporaires fonctionnent comme des AWS informations d'identification standard, mais avec des autorisations limitées définies par le rôle IAM non authentifié de votre pool d'identités. Vous pouvez les utiliser avec n'importe quel AWS SDK ou AWS CLI. Pour plus d'informations sur la configuration à l' AWS SDKs aide d'informations d'identification, consultez la section Fournisseurs d'informations d'identification standardisés dans le guide de référence AWS SDKs et Tools.

Les exemples ci-dessous ne constituent pas une liste complète, mais ils montrent comment la fonctionnalité d'invité d'un pool d'identités peut généralement améliorer l'expérience utilisateur.

Les exemples suivants configurent les fournisseurs d'informations d'identification pour un accès limité à Amazon S3 en tant qu'utilisateur invité.

Python
# Example: Using credentials with boto3 import boto3 # Configure client with temporary credentials s3_client = boto3.client( 's3', aws_access_key_id='AKIAIOSFODNN7EXAMPLE', aws_secret_access_key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY', aws_session_token='IQoJb3JpZ2luX2VjEEXAMPLE......' ) # Make API requests within IAM role permissions response = s3_client.list_objects_v2(Bucket='my-public-bucket') # Access public content for obj in response.get('Contents', []): print(f"File: {obj['Key']}, Size: {obj['Size']} bytes")
JavaScript
// Example: Accessing public content import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3"; const s3Client = new S3Client({ region: "us-east-1", credentials: { accessKeyId: 'AKIAIOSFODNN7EXAMPLE', secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY', sessionToken: 'IQoJb3JpZ2luX2VjEEXAMPLE......' } }); // Access public images or documents const response = await s3Client.send(new GetObjectCommand({ Bucket: 'my-public-content', Key: 'product-catalog.pdf' }));

Les exemples suivants utilisent l'accès en lecture seule à Amazon DynamoDB en tant qu'utilisateur invité.

Python
# Example: Limited app functionality for trial users import boto3 dynamodb = boto3.client( 'dynamodb', aws_access_key_id='AKIAIOSFODNN7EXAMPLE', aws_secret_access_key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY', aws_session_token='IQoJb3JpZ2luX2VjEEXAMPLE......' ) # Allow guest users to view sample data (limited to 5 items) response = dynamodb.scan(TableName='SampleProducts', Limit=5)
JavaScript
// Example: Limited app functionality for trial users import { DynamoDBClient, ScanCommand } from "@aws-sdk/client-dynamodb"; const dynamodbClient = new DynamoDBClient({ region: "us-east-1", credentials: { accessKeyId: 'AKIAIOSFODNN7EXAMPLE', secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY', sessionToken: 'IQoJb3JpZ2luX2VjEEXAMPLE......' } }); // Allow guest users to view sample data (limited to 5 items) const response = await dynamodbClient.send(new ScanCommand({ TableName: 'SampleProducts', Limit: 5 }));

Cette étape explore le flux global d'utilisation des fournisseurs d'identité sociale avec les pools d'identités Amazon Cognito. L'authentification sociale fournit une expérience de connexion familière tout en préservant la sécurité grâce à une gestion fédérée des identités. Vous pouvez vous connecter auprès d'un fournisseur d'identité sociale (IdP) tel que Google, Facebook et Amazon, puis échanger ce jeton IdP contre des informations d'identification temporaires. AWS L'intégration entre Twitter et Apple est également prise en charge par les pools d'identités, mais elle n'est pas prise en charge dans l'exemple d'application.

Le pool d'identités lui-même n'est pas un annuaire d'utilisateurs. Il ne stocke pas les mots de passe ni les champs de profil. Il fait plutôt confiance à une source externe IdPs pour authentifier l'utilisateur et se concentre sur l'autorisation de cet utilisateur déjà authentifié à appeler directement les AWS services, en vendant des informations d'identification pour les rôles IAM.

Social identity provider with enhanced flow

Cette section explique comment vous pouvez utiliser un fournisseur d'identité sociale pour connecter un utilisateur et, à l'aide du flux amélioré, échanger le jeton du fournisseur dans un pool d'identités Amazon Cognito contre des informations d'identification temporaires pour demander AWS des ressources.

Utilisez la connexion sociale avec le flux amélioré de l'exemple d'application
  1. Dans l'application de démonstration, accédez à la section Démo interactive

  2. Choisissez l'onglet Accès authentifié.

  3. Choisissez l'onglet Flux amélioré.

  4. Choisissez un fournisseur de réseau social compatible que vous avez configuré, par exemple Sign in with Google, Sign in with Facebook ou Login with Amazon.

  5. Connectez-vous et consentez à partager les données utilisateur avec l'application.

  6. Le fournisseur redirige vers l'URI de redirection de l'application

  7. L'application envoie le jeton du fournisseur à votre pool d'identités et récupère les informations d'identification temporaires AWS

  8. L'application affiche le panneau Résultats dans l'interface Web.

    Une fois l'authentification réussie, vous verrez l'interface Web afficher le panneau Résultats, et deux options s'offrent à vous pour les explorer :

    1. Bouton Afficher les informations d'identification uniquement : cliquez sur ce bouton si vous souhaitez voir directement les AWS informations d'identification temporaires générées sans les détails du flux d'API.

      { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......", "Expiration": "2025-08-12T13:36:17-07:00" } }
    2. Bouton Afficher le flux d'API détaillé : cliquez sur ce bouton si vous souhaitez voir les demandes step-by-step d'API.

      • L'application connecte l'utilisateur avec un IdP social et obtient le jeton du fournisseur. Les pools d'identités acceptent les artefacts suivants de la part des fournisseurs sociaux :

        Fournisseur d'identité Clé du fournisseur Cognito Objectif
        Google accounts.google.com OAuth 2,0 jetons provenant de Google Sign-In
        Facebook graph.facebook.com Accédez aux jetons depuis Facebook Login
        Amazon www.amazon.com OAuth jetons de Login with Amazon

        Une fois l'authentification réussie auprès du fournisseur social, votre application reçoit une OAuth réponse contenant le jeton d'accès et d'autres informations d'authentification :

        { "access_token": "ya29.A0AS3H6NEXAMPLE......", "expires_in": 3599, "scope": "openid https://www.examplesocial....", "token_type": "Bearer", "id_token": "eyJhbGciOiJSUzI1NiIsEXAMPLE......" }
      • GetId()Demande d'API avec votre identifiant de pool d'identités et une Logins carte contenant votre jeton de fournisseur social

        POST GetId { "IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Logins": { "accounts.google.com": "eyJhbGciOiJSUzI1NiIsEXAMPLE......" } }

        Réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222" }
      • GetCredentialsForIdentity()avec la Logins carte renvoyée IdentityID et la même

        POST GetCredentialsForIdentity { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Logins": { "accounts.google.com": "eyJhbGciOiJSUzI1NiIsEXAMPLE......" } }

        Réponse :

        { "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......", "Expiration": "2025-08-07T00:58:21-07:00" }, "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222" }

Que s'est-il passé : Amazon Cognito a validé le jeton auprès du fournisseur configuré, a choisi un rôle IAM en fonction de la configuration de votre fournisseur et a appelé en votre AWS STS nom. Votre pool d'identités a ensuite renvoyé des informations d'identification temporaires.

Social identity provider with basic flow

Cette section explique comment vous pouvez utiliser un fournisseur d'identité sociale pour connecter un utilisateur et, à l'aide du flux de base, échanger le jeton du fournisseur dans un pool d'identités Amazon Cognito contre des informations d'identification temporaires pour appeler AWS des services.

Utilisez la connexion sociale avec le flux de base de l'exemple d'application
  1. Dans l'application de démonstration, accédez à la section Démo interactive

  2. Choisissez l'onglet Accès authentifié.

  3. Choisissez l'onglet Flux de base.

  4. Choisissez un fournisseur de réseau social compatible que vous avez configuré, par exemple Sign in with Google, Sign in with Facebook ou Login with Amazon.

  5. Connectez-vous et consentez à partager les données utilisateur avec l'application.

  6. Le fournisseur redirige vers l'URI de redirection de l'application

  7. L'application envoie le jeton du fournisseur à votre pool d'identités et récupère les informations d'identification temporaires AWS

  8. L'application affiche le panneau Résultats dans l'interface Web.

    Une fois l'authentification réussie, vous verrez l'interface Web afficher le panneau Résultats, et deux options s'offrent à vous pour les explorer :

    1. Bouton Afficher les informations d'identification uniquement : cliquez sur ce bouton si vous souhaitez voir directement les AWS informations d'identification temporaires générées sans les détails du flux d'API.

      { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......", "Expiration": "2025-08-12T13:36:17-07:00" } }
    2. Bouton Afficher le flux d'API détaillé : cliquez sur ce bouton si vous souhaitez voir les demandes step-by-step d'API.

      • L'application connecte l'utilisateur avec un IdP social et obtient le jeton du fournisseur. Les pools d'identités acceptent les artefacts suivants de la part des fournisseurs sociaux :

        Fournisseur d'identité Clé du fournisseur Cognito Objectif
        Google accounts.google.com OAuth 2,0 jetons provenant de Google Sign-In
        Facebook graph.facebook.com Accédez aux jetons depuis Facebook Login
        Amazon www.amazon.com OAuth jetons de Login with Amazon

        Une fois l'authentification réussie auprès du fournisseur social, votre application reçoit une OAuth réponse contenant le jeton d'accès et d'autres informations d'authentification :

        { "access_token": "ya29.A0AS3H6NEXAMPLE......", "expires_in": 3599, "scope": "openid https://www.examplesocial....", "token_type": "Bearer", "id_token": "eyJhbGciOiJSUzI1NiIsEXAMPLE......" }
      • GetId()Demande d'API avec votre identifiant de pool d'identités et une Logins carte contenant votre jeton de fournisseur social

        POST GetId { "IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Logins": { "accounts.google.com": "token..." } }

        Réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222" }
      • GetOpenIdToken()avec la carte Logins renvoyée IdentityID et la même

        POST GetOpenIdToken { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Logins": { "accounts.google.com": "token..." } }

        Réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Token": "eyJraWQiOiJFWAMPLE......" }
      • AssumeRoleWithWebIdentity()avec le jeton OpenID

        POST AssumeRoleWithWebIdentity { "RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolAuth_Role", "WebIdentityToken": "eyJraWQiOiJFWAMPLE......" }

        Réponse :

        { "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......", "Expiration": "2025-08-12T14:36:17-07:00" } }

Que s'est-il passé : Amazon Cognito a validé le jeton auprès du fournisseur configuré et a émis un jeton OpenID. L'application a appelé AWS STS directement pour assumer un rôle IAM et recevoir des informations d'identification temporaires.

Comprendre l'accès aux réseaux sociaux

  • Les utilisateurs des réseaux sociaux reçoivent des AWS informations d'identification temporaires via les groupes d'identités Amazon Cognito après s'être authentifiés auprès de leur fournisseur de réseaux sociaux.

  • Chaque utilisateur authentifié reçoit un identifiant d'identité unique qui persiste d'une session à l'autre.

  • Ces informations d'identification sont liées à un rôle IAM spécialement conçu pour l'accès authentifié, fournissant des autorisations plus étendues que l'accès invité.

  • Les jetons des fournisseurs sociaux sont échangés contre des AWS informations d'identification, ce qui permet de conserver l'identité et les autorisations des utilisateurs.

Cette étape explore l'authentification Amazon Cognito avec l'intégration des connexions gérées par le groupe d'utilisateurs. Lorsque vous liez un groupe d'utilisateurs en tant qu'IdP à un groupe d'identités, les jetons du groupe d'utilisateurs autorisent votre groupe d'identités à émettre des informations d'identification temporaires.

User pool authentication with enhanced flow

Le flux amélioré fournit une approche rationalisée pour obtenir des AWS informations d'identification via les pools d'identités Amazon Cognito avec une seule demande d'API.

Utilisez l'authentification du groupe d'utilisateurs Amazon Cognito avec le flux amélioré du pool d'identités
  1. Dans l'application de démonstration, accédez à la section Démo interactive

  2. Choisissez l'onglet Accès authentifié.

  3. Choisissez l'onglet Flux amélioré.

  4. Choisissez Se connecter avec les groupes d'utilisateurs Amazon Cognito

  5. Connectez-vous avec votre nom d'utilisateur et votre mot de passe dans la connexion gérée.

  6. Le groupe d'utilisateurs est redirigé vers l'URI de redirection de votre application avec un code d'autorisation.

  7. L'application échange le code d'autorisation avec votre groupe d'utilisateurs contre des jetons Web JSON.

  8. L'application échange le jeton d'identification avec votre pool d'identités contre des AWS informations d'identification temporaires

  9. L'application affiche le panneau Résultats dans l'interface Web

    Une fois l'authentification réussie, vous verrez l'interface Web afficher le panneau Résultats, et deux options s'offrent à vous pour les explorer :

    1. Bouton Afficher les informations d'identification uniquement : cliquez sur ce bouton si vous souhaitez voir directement les AWS informations d'identification temporaires générées sans les détails du flux d'API.

      { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......", "Expiration": "2025-08-12T13:36:17-07:00" } }
    2. Bouton Afficher le flux d'API détaillé : cliquez sur ce bouton si vous souhaitez voir les demandes step-by-step d'API.

      • L'application connecte l'utilisateur à l'aide d'un Amazon Cognito. Une fois l'authentification réussie auprès du groupe d'utilisateurs, votre application reçoit une réponse OAuth 2.0 contenant le jeton d'identification (JWT). Les pools d'identités acceptent les jetons d'identification JWT provenant de groupes d'utilisateurs utilisant le format de clé de fournisseur suivant :

        Fournisseur d'identité Clé du fournisseur Cognito Objectif
        Groupe d’utilisateurs Amazon Cognito cognito-idp.{region}.amazonaws.com/{user-pool-id} Jetons d'identification JWT issus des groupes d'utilisateurs Amazon Cognito

        Après une authentification réussie auprès du groupe d'utilisateurs, votre application reçoit une réponse OAuth 2.0 contenant le jeton d'identification (JWT) :

        { "id_token": "eyJraWQiOiJFWAMPLE......", "token_type": "Bearer", "expires_in": 3600 }
      • GetId()Demande d'API avec votre identityPoolId et une Logins carte incluant la clé de fournisseur de votre pool d'utilisateurs mappée sur le. id_token Amazon Cognito a vérifié que la signature, l'émetteur, l'expiration et l'audience (aud) du jeton d'identification du groupe d'utilisateurs correspondent à l'un des clients d'application IDs que vous avez enregistrés pour cet IdP du groupe d'utilisateurs dans le pool d'identités.

        POST GetId { "AccountId": "111122223333", "IdentityPoolId": "us-east-1:1ac4a76d-1fef-48aa-83af-4224799c0b5c", "Logins": { "cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......" } }

        S'il est valide, il trouve ou crée et renvoie celui de l'utilisateurIdentityID. Voici un exemple de réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222" }
      • GetCredentialsForIdentity()avec le renvoyé identityPoolId et a = la même Logins carte avec le. id_token Amazon Cognito revalide que la signature, l'émetteur, l'expiration et l'audience (aud) du jeton d'identification du groupe d'utilisateurs correspondent à l'un des clients d'application IDs que vous avez enregistrés pour cet IdP du groupe d'utilisateurs dans le pool d'identités.

        POST GetCredentialsForIdentity { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Logins": { "cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......" } }

        S'il est valide, il choisit un rôle IAM (roles-in-tokenpar règles ou par défaut), appelle en votre AWS STS nom et renvoie des AWS informations d'identification temporaires. Voici un exemple de réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Credentials": { "AccessKeyId": "ASIAW7TIP7EJEXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......", "Expiration": "2025-08-12T14:36:17-07:00" } }
User pool authentication with basic flow

Le flux de base fournit un contrôle granulaire du processus d'authentification avec des demandes d'API distinctes pour la récupération d'identité et la génération d'informations d'identification.

Utiliser l'authentification du groupe d'utilisateurs Amazon Cognito avec le flux de base du pool d'identités
  1. Dans l'application de démonstration, accédez à la section Démo interactive

  2. Choisissez l'onglet Accès authentifié.

  3. Choisissez l'onglet Flux de base.

  4. Choisissez Se connecter avec les groupes d'utilisateurs Amazon Cognito

  5. Connectez-vous avec votre nom d'utilisateur et votre mot de passe dans la connexion gérée.

  6. Le groupe d'utilisateurs est redirigé vers l'URI de redirection de votre application avec un code d'autorisation.

  7. L'application échange le code d'autorisation avec votre groupe d'utilisateurs contre des jetons Web JSON.

  8. L'application échange le jeton d'identification avec votre pool d'identités contre des AWS informations d'identification temporaires

  9. L'application affiche le panneau Résultats dans l'interface Web

    Une fois l'authentification réussie, vous verrez l'interface Web afficher le panneau Résultats, et deux options s'offrent à vous pour les explorer :

    1. Bouton Afficher les informations d'identification uniquement : cliquez sur ce bouton si vous souhaitez voir directement les AWS informations d'identification temporaires générées sans les détails du flux d'API.

      { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......", "Expiration": "2025-08-12T13:36:17-07:00" } }
    2. Bouton Afficher le flux d'API détaillé : cliquez sur ce bouton si vous souhaitez voir les demandes step-by-step d'API.

      • L'application connecte l'utilisateur à un groupe d'utilisateurs Amazon Cognito et obtient un jeton d'identification (JWT) comme artefact. Une fois l'authentification réussie auprès du groupe d'utilisateurs, votre application reçoit une OAuth réponse contenant le jeton d'identification (JWT). Les pools d'identités utilisent ce jeton pour l'authentification :

        { "id_token": "eyJraWQiOiJFWAMPLE......", "token_type": "Bearer", "expires_in": 3600 }
      • GetId()Demande d'API avec l'ID de votre pool d'identités et une Logins carte incluant la clé du fournisseur de votre groupe d'utilisateurs et le jeton d'identification comme valeur. Amazon Cognito a vérifié que la signature, l'expiration et l'audience (aud) du jeton d'identification du groupe d'utilisateurs correspondent à l'un des clients d'application IDs que vous avez enregistrés pour cet IdP du groupe d'utilisateurs dans le pool d'identités.

        POST GetId { "AccountId": "111122223333", "IdentityPoolId": "us-east-1:1ac4a76d-1fef-48aa-83af-4224799c0b5c", "Logins": { "cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......" } }

        S'il est valide, il trouve ou crée et renvoie celui de l'utilisateurIdentityID. Voici un exemple de réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222" }
      • GetOpenIdToken()avec la Logins carte renvoyée IdentityID et la même

        POST GetOpenIdToken { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Logins": { "cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......" } }

        Réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Token": "eyJraWQiOiJFWAMPLE......" }

        Que se passe-t-il à cette étape : Amazon Cognito émet un jeton d'identité Web OpenID Connect de courte durée à partir de cognito-identity.amazonaws.com qui le représente. IdentityId Le jeton inclut des demandes OIDC qui AWS STS évaluent, notamment aud (votre identifiant de pool d'identités) et amr (authentifié ou non authentifié). La politique de confiance de votre rôle IAM doit exiger ces réclamations.

      • AssumeRoleWithWebIdentity()- Votre application appelle AWS STS directement pour échanger le jeton Amazon Cognito OpenID contre des informations d'identification temporaires AWS

        POST sts:AssumeRoleWithWebIdentity { "RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolAuth_Role", "WebIdentityToken": "eyJraWQiOiJFWAMPLE......", "RoleSessionName": "CognitoIdentityCredentials" }

        Réponse :

        { "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "FwoGZXIvYXdzEEXAMPLE......", "Expiration": "2025-08-12T14:36:17-07:00" }, "AssumedRoleUser": { "AssumedRoleId": "AROAW7TIP7EJYEXAMPLE:CognitoIdentityCredentials", "Arn": "arn:aws:sts::111122223333:assumed-role/Cognito_IdentityPoolAuth_Role/CognitoIdentityCredentials" } }

        Ce qu'a fait votre application de démonstration : votre application a envoyé le jeton OpenID de GetOpenIdToken() à AWS STS, demandant des informations d'identification temporaires. AWS STS a effectué des contrôles de validation et a émis des informations d'identification :

  • Les utilisateurs du groupe d'utilisateurs reçoivent des AWS informations d'identification temporaires via les groupes d'identités Amazon Cognito.

  • Ces informations d'identification sont liées à un rôle IAM spécifié dans la configuration de votre pool d'identités.

  • Les jetons d'identification du groupe d'utilisateurs sont échangés contre des AWS informations d'identification via le pool d'identités.

Cette étape explore l'authentification SAML. Les utilisateurs peuvent se connecter auprès de fournisseurs d'identité d'entreprise qui prennent en charge le protocole SAML pour accéder aux AWS services. Le flux de base avec SAML n'est pas pris en charge dans l'exemple d'application.

SAML authentication with enhanced flow

Cette section explique comment utiliser un fournisseur d'identité SAML pour connecter un utilisateur et, à l'aide du flux amélioré, échanger l'assertion SAML d'un pool d'identités Amazon Cognito contre des informations d'identification AWS temporaires pour appeler des services. AWS

Utiliser l'authentification SAML avec le flux amélioré du pool d'identités
  1. Dans l'application de démonstration, accédez à la section Démo interactive

  2. Choisissez l'onglet Accès authentifié.

  3. Choisissez l'onglet Flux amélioré.

  4. Choisissez Se connecter avec un fournisseur SAML

  5. Connectez-vous à l'aide des informations d'identification de votre entreprise.

  6. Le groupe d'utilisateurs est redirigé vers l'URI de redirection de votre application avec une assertion SAML.

  7. L'application échange le code d'autorisation avec votre groupe d'utilisateurs contre des jetons Web JSON.

  8. L'application échange la réponse SAML avec votre pool d'identités pour obtenir des informations d'identification temporaires AWS

  9. L'application affiche le panneau Résultats dans l'interface Web

    Une fois l'authentification réussie, vous verrez l'interface Web afficher le panneau Résultats, et deux options s'offrent à vous pour les explorer :

    1. Bouton Afficher les informations d'identification uniquement : cliquez sur ce bouton si vous souhaitez voir directement les AWS informations d'identification temporaires générées sans les détails du flux d'API.

      { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......", "Expiration": "2025-08-12T13:36:17-07:00" } }
    2. Bouton Afficher le flux d'API détaillé : cliquez sur ce bouton si vous souhaitez voir les demandes step-by-step d'API.

      • L'application connecte l'utilisateur avec un IdP SAML et obtient la réponse SAML. Les pools d'identités acceptent les assertions SAML des fournisseurs d'entreprise en utilisant l'ARN du fournisseur SAML comme clé :

        Fournisseur d'identité Clé du fournisseur Cognito Objectif
        Fournisseur SAML arn:aws:iam::111122223333:saml-provider/EXAMPLE Assertions SAML provenant de l'entreprise IdPs

        Après une authentification réussie auprès du fournisseur SAML, votre application reçoit une réponse SAML via HTTP POST à votre URL de rappel :

        { "saml_response": "PD94bWwgdmVyc2lvbj0iMS4wIiBFWAMPLE...", "provider_arn": "arn:aws:iam::111122223333:saml-provider/EXAMPLE", "status": "Authentication successful" }
      • GetId()Demande d'API avec l'ID de votre pool d'identités et une Logins carte contenant l'ARN et l'assertion de votre fournisseur SAML

        POST GetId { "AccountId": "111122223333", "IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Logins": { "arn:aws:iam::111122223333:saml-provider/EXAMPLE": "PD94bWwgdmVyc2lvbj0iMS4wIiBFWAMPLE..." } }

        Réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222" }
      • GetCredentialsForIdentity()avec la Logins carte renvoyée IdentityID et la même

        POST GetCredentialsForIdentity { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Logins": { "arn:aws:iam::111122223333:saml-provider/EXAMPLE": "PD94bWwgdmVyc2lvbj0iMS4wIiBFWAMPLE..." } }

        Réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......" } }

Que s'est-il passé : Amazon Cognito a validé l'assertion SAML auprès du fournisseur configuré, a choisi un rôle IAM en fonction des attributs ou des règles SAML et a appelé en votre nom. AWS STS

Comprendre l'accès SAML

  • Les utilisateurs d'entreprise reçoivent des AWS informations d'identification temporaires de la part des groupes d'identités Amazon Cognito après s'être authentifiés auprès de leur fournisseur SAML.

  • Chaque utilisateur authentifié reçoit un identifiant d'identité unique qui persiste d'une session à l'autre.

  • Ces informations d'identification sont liées à un rôle IAM spécialement conçu pour l'accès authentifié, fournissant des autorisations plus étendues que l'accès invité.

  • Les assertions SAML sont échangées contre des AWS informations d'identification, ce qui permet de conserver l'identité de l'utilisateur et les attributs de l'entreprise.

Cette étape explore l'authentification OIDC auprès des fournisseurs d'identité d'entreprise. Les utilisateurs peuvent se connecter via le fournisseur d'identité d'entreprise de leur organisation (tel qu'Azure AD, Okta ou Google Workspace) pour accéder aux AWS services. Poursuivez votre lecture si vous recherchez des informations sur l'intégration de l'authentification basée sur des normes à vos AWS ressources. Après avoir implémenté l'authentification OIDC, vous apprendrez à tirer parti des demandes OIDC pour un contrôle d'accès précis.

OIDC authentication with enhanced flow

Cette section explique comment utiliser un fournisseur d'identité OIDC pour connecter un utilisateur et, à l'aide du flux amélioré, échanger le jeton OIDC d'un pool d'identités Amazon Cognito contre des informations d'identification AWS temporaires pour appeler des services. AWS

Utilisez la connexion OIDC avec le flux amélioré du pool d'identités
  1. Dans l'application de démonstration, accédez à la section Démo interactive

  2. Choisissez l'onglet Accès authentifié.

  3. Choisissez l'onglet Flux amélioré.

  4. Choisissez Se connecter avec le fournisseur OIDC

  5. Connectez-vous à l'aide des informations d'identification de votre entreprise.

  6. Le fournisseur OIDC redirige vers l'application avec un code d'autorisation

  7. L'application échange le code d'autorisation avec votre groupe d'utilisateurs contre des jetons Web JSON.

  8. L'application envoie le jeton OIDC à votre pool d'identités et récupère les informations d'identification temporaires AWS .

  9. L'application affiche le panneau Résultats dans l'interface Web

    Une fois l'authentification réussie, vous verrez l'interface Web afficher le panneau Résultats, et deux options s'offrent à vous pour les explorer :

    1. Bouton Afficher les informations d'identification uniquement : cliquez sur ce bouton si vous souhaitez voir directement les AWS informations d'identification temporaires générées sans les détails du flux d'API.

      { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......", "Expiration": "2025-08-12T13:36:17-07:00" } }
    2. Bouton Afficher le flux d'API détaillé : cliquez sur ce bouton si vous souhaitez voir les demandes step-by-step d'API.

      • L'application connecte l'utilisateur avec un IdP OIDC et obtient le jeton d'identification. Les pools d'identités acceptent les jetons OIDC des fournisseurs d'entreprise :

        Fournisseur d'identité Clé du fournisseur Cognito Objectif
        Fournisseur OIDC example-provider.com/oauth2/default Jetons d'identification OIDC de l'entreprise IdPs

        Une fois l'authentification réussie auprès du fournisseur OIDC, votre application reçoit une réponse OAuth 2.0 contenant les jetons :

        { "token_type": "Bearer", "expires_in": 3600, "access_token": "eyJraWQiOiJFWAMPLE......", "scope": "email openid profile", "id_token": "eyJraWQiOiJFWAMPLE......" }
      • GetId()Demande d'API avec l'ID de votre pool d'identités et une Logins carte contenant votre jeton de fournisseur OIDC

        POST GetId { "AccountId": "111122223333", "IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Logins": { "example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......" } }

        Réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222" }
      • GetCredentialsForIdentity()avec la carte Logins renvoyée IdentityID et la même

        POST GetCredentialsForIdentity { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Logins": { "example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......" } }

        Réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......" } }

Que s'est-il passé : Amazon Cognito a validé le jeton OIDC auprès du fournisseur configuré, a choisi un rôle IAM (par défaut, basé sur une réclamation ou mappé sur des règles) et a appelé en votre nom. AWS STS

OIDC authentication with basic flow

Cette section explique comment utiliser un fournisseur d'identité OIDC pour connecter un utilisateur et, à l'aide du flux de base, échanger le jeton OIDC d'un pool d'identités Amazon Cognito contre des informations d'identification AWS temporaires pour appeler des services. AWS

Utiliser la connexion OIDC avec le flux de base du pool d'identités
  1. Dans l'application de démonstration, accédez à la section Démo interactive

  2. Choisissez l'onglet Accès authentifié.

  3. Choisissez l'onglet Flux de base.

  4. Choisissez Se connecter avec le fournisseur OIDC

  5. Connectez-vous à l'aide des informations d'identification de votre entreprise.

  6. Le fournisseur OIDC redirige vers l'application avec un code d'autorisation

  7. L'application échange le code d'autorisation avec votre groupe d'utilisateurs contre des jetons Web JSON.

  8. L'application envoie le jeton OIDC à votre pool d'identités et récupère les informations d'identification temporaires AWS .

  9. L'application affiche le panneau Résultats dans l'interface Web

    Une fois l'authentification réussie, vous verrez l'interface Web afficher le panneau Résultats, et deux options s'offrent à vous pour les explorer :

    1. Bouton Afficher les informations d'identification uniquement : cliquez sur ce bouton si vous souhaitez voir directement les AWS informations d'identification temporaires générées sans les détails du flux d'API.

      { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......", "Expiration": "2025-08-12T13:36:17-07:00" } }
    2. Bouton Afficher le flux d'API détaillé : cliquez sur ce bouton si vous souhaitez voir les demandes step-by-step d'API.

      • L'application connecte l'utilisateur avec un IdP OIDC et obtient le jeton d'identification. Les pools d'identités acceptent les jetons OIDC des fournisseurs d'entreprise :

        Fournisseur d'identité Clé du fournisseur Cognito Objectif
        Fournisseur OIDC example-provider.com/oauth2/default Jetons d'identification OIDC de l'entreprise IdPs

        Une fois l'authentification réussie auprès du fournisseur OIDC, votre application reçoit une réponse OAuth 2.0 contenant les jetons :

        { "token_type": "Bearer", "expires_in": 3600, "access_token": "eyJraWQiOiJFWAMPLE......", "scope": "openid email profile", "id_token": "eyJraWQiOiJFWAMPLE......" }
      • GetId()Demande d'API avec l'ID de votre pool d'identités et une Logins carte contenant votre jeton de fournisseur OIDC

        POST GetId { "IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Logins": { "example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......" } }

        Réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222" }
      • GetOpenIdToken()avec l'IdentityId renvoyé et la même carte Logins

        POST GetOpenIdToken { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Logins": { "example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......" } }

        Réponse :

        { "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Token": "eyJraWQiOiJFWAMPLE......" }
      • AssumeRoleWithWebIdentity()avec le jeton OpenID

        POST AssumeRoleWithWebIdentity { "RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolAuth_Role", "WebIdentityToken": "eyJraWQiOiJFWAMPLE......" }

        Réponse :

        { "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "FwoGZXIvYXdzEEXAMPLE......", "Expiration": "2025-08-12T14:36:17-07:00" } }

Que s'est-il passé : Amazon Cognito a validé le jeton OIDC auprès du fournisseur configuré et a renvoyé un jeton OpenID. L'application a appelé AWS STS directement pour assumer le rôle IAM approprié et a reçu des informations d'identification de courte durée.

Comprendre l'authentification OIDC

  • Basé sur des normes : L'OIDC est basé sur la OAuth version 2.0 et fournit des informations d'identité normalisées.

  • Validation des jetons : l'authenticité des jetons d'identification peut être validée.

  • Accès basé sur les demandes : les demandes OIDC peuvent être utilisées pour le mappage des rôles et le contrôle d'accès.

  • Intégration d'entreprise : Fonctionne avec les principaux fournisseurs d'identité d'entreprise.

Étapes suivantes

Maintenant que vous avez configuré et exploré l'application de démonstration, vous pouvez :

  • Configurer des fournisseurs d'identité supplémentaires que vous n'avez pas encore testés

  • Testez l'authentification améliorée et l'authentification de base pour comprendre leurs différences

  • Personnalisez la démo en fonction de votre propre cas d'utilisation

  • Intégrez les pools d'identités Amazon Cognito dans vos propres applications.