Utilisation de l'interface utilisateur hébergée par Amazon Cognito pour l'inscription et la connexion - Amazon Cognito

Utilisation de l'interface utilisateur hébergée par Amazon Cognito pour l'inscription et la connexion

L'interface utilisateur hébergée par Amazon Cognito vous fournit un serveur d'autorisation compatible OAuth 2.0. Il fournit l'implémentation par défaut des flux d'utilisateur final tels que l'enregistrement et l'authentification. Vous pouvez aussi personnaliser les flux utilisateur tels que l'ajout de l'authentification multifacteur (MFA) en modifiant simplement la configuration de votre groupe d'utilisateurs. Votre application vous redirige vers l'interface utilisateur hébergée qui gère vos flux utilisateur. L'expérience utilisateur peut être personnalisée en fournissant des logos spécifiques à la marque et en personnalisant la conception des éléments de l'interface utilisateur hébergée. L'interface utilisateur hébergée par Amazon Cognito vous permet également d'ajouter la possibilité pour les utilisateurs finaux de se connecter à l'aide de fournisseurs de réseaux sociaux (Facebook, Amazon, Google et Apple), ainsi que de tout fournisseur compatible OpenID Connect (OIDC) et SAML.

Configuration de l'interface utilisateur hébergée avec AWS Amplify

Si vous utilisez AWS Amplify pour ajouter l'authentification à votre application web ou mobile, vous pouvez configurer votre interface utilisateur hébergée à l'aide de l'interface de ligne de commande (CLI) et des bibliothèques du cadre AWS Amplify. Pour ajouter l'authentification à votre application, utilisez l'AWS Amplify CLI pour ajouter la catégorie Auth à votre projet. Ensuite, dans votre code client, vous utilisez les bibliothèques AWS Amplify pour authentifier des utilisateurs avec votre groupe d'utilisateurs Amazon Cognito.

Vous pouvez afficher une interface utilisateur hébergée prédéfinie ou fédérer des utilisateurs via un point de terminaison OAuth 2.0 qui redirige vers un fournisseur de connexion par réseaux sociaux, tel que Facebook, Google, Amazon ou Apple. Lorsqu'un utilisateur s'est authentifié auprès du fournisseur social, AWS Amplify crée un nouvel utilisateur dans votre groupe d'utilisateurs, si nécessaire, puis fournit le jeton OIDC de l'utilisateur à votre application.

Pour plus d'informations, consultez la documentation relative au cadre AWS Amplify de votre plate-forme d'application :

Configuration de l'interface utilisateur hébergée avec la console Amazon Cognito

Original console

Créer un client d'application

  1. Accédez à la console Amazon Cognito. Si vous y êtes invité, saisissez vos informations d'identification AWS.

  2. Sélectionnez Gérer les groupes d'utilisateurs.

  3. Choisissez un groupe d'utilisateurs existant dans la liste ou créez-en un.

  4. Dans la barre de navigation sur le côté gauche de la page, sous Paramètres généraux, choisissez Clients d'application.

  5. Choisissez Ajouter un client d'application.

  6. Saisissez un nom pour votre application.

  7. Sauf si cela est requis par votre flux d'autorisation, désélectionnez l'option Générer la clé secrète du client. La clé secrète du client est utilisée par les applications disposant d'un composant côté serveur pouvant sécuriser cette clé secrète.

  8. (Facultatif) Modifiez les paramètres d'expiration du jeton.

  9. Sélectionnez des options de configuration de flux d'authentification. Pour plus d'informations, consultez Flux d'authentification d'un groupe d'utilisateurs.

  10. Choisissez une configuration de sécurité. Nous vous recommandons de sélectionner Activé.

  11. (Facultatif) Choisissez Définir les autorisations de lecture et d'écriture pour les attributs. Pour de plus amples informations, veuillez consulter Autorisations d'attributs et des portées.

  12. Choisissez Créer un client d'application.

  13. Saisissez l'ID du client d'application.

  14. Sélectionnez Revenir aux détails du groupe.

Configurer l'application.

  1. Dans la barre de navigation sur le côté gauche de la page de la console, choisissez App client settings (Paramètres du client d'application).

  2. Sélectionnez Cognito User Pool (Groupe d'utilisateurs Cognito) en tant que l'un des Fournisseurs d'identité activés.

    Note

    Pour pouvoir se connecter avec des fournisseurs d'identité (IdP) externes tels que Facebook, Amazon, Google ou Apple, ou via des fournisseurs d'identité OpenID Connect (OIDC) ou SAML, vous devez d'abord les configurer comme décrit dans les étapes suivantes, puis revenir à la page Paramètres du client d'application pour les activer.

  3. Saisissez des URL de rappel. Une URL de rappel indique où l'utilisateur sera redirigé après l'aboutissement de la connexion.

  4. Saisissez des URL de déconnexion. Une URL de déconnexion indique où l'utilisateur sera redirigé après la déconnexion.

  5. Sélectionnez Authorization code grant (Octroi de code d'autorisation) pour renvoyer un code d'autorisation qui est ensuite remplacé par des jetons de groupe d'utilisateurs. Étant donné que les jetons ne sont jamais présentés directement à un utilisateur final, ils sont moins susceptibles d'être compromis. Toutefois, une application personnalisée est requise au niveau du backend pour échanger le code d'autorisation contre des jetons de groupe d'utilisateurs. Pour des raisons de sécurité, nous vous recommandons d'utiliser ce flux d'octroi de code d'autorisation avec une PKCE (Proof Key for Code Exchange) pour les applications mobiles.

  6. Sélectionnez implicit grant (octroi implicite) pour que les jetons web JSON (JSON web tokens, JWT) vous soient renvoyés à partir d'Amazon Cognito. Vous pouvez utiliser ce flux lorsqu'il n'y a pas de backend disponible pour échanger un code d'autorisation contre des jetons. C'est également utile pour déboguer les jetons.

  7. Vous pouvez activer Authorization code grant (Octroi de code d'autorisation) et Implicit code grant (Octroi de code implicite), puis utiliser chaque octroi selon vos besoins.

  8. Sélectionnez toutes les Règles OAuth autorisées, sauf si vous souhaitez spécifiquement en exclure une.

  9. Sélectionnez Informations d'identification du client uniquement si votre application doit demander des jetons d'accès pour elle-même et non pas pour un utilisateur.

  10. Choisissez Enregistrer les modifications.

Configurer un domaine

  1. Sélectionnez Choisir un nom de domaine.

  2. Dans la page Nom de domaine, saisissez un préfixe de domaine et vérifiez sa disponibilité ou saisissez votre propre domaine.

  3. Notez cette adresse de domaine complète.

  4. Choisissez Enregistrer les modifications.

New console

Créer un client d'application

  1. Accédez à la console Amazon Cognito. Si vous y êtes invité, saisissez vos informations d'identification AWS.

  2. Choisissez Groupes d'utilisateurs.

  3. Choisissez un groupe d'utilisateurs existant dans la liste ou créez-en un.

  4. Sélectionnez l'onglet Intégration d'applications.

  5. Sous Clients d'application, sélectionnez Créer un client d'application.

  6. Sélectionnez un type d'application : Client public,Client confidentiel ou Autre. Un client public fonctionne généralement à partir des appareils de vos utilisateurs et utilise des API non authentifiées et authentifiées par jeton. Un client confidentiel fonctionne généralement à partir d'une application sur un serveur central en lequel vous avez confiance avec des secrets client et des informations d'identification d'API, et utilise des en-têtes d'autorisation et des informations d'identification AWS Identity and Access Management pour signer les demandes. Si votre cas d'utilisation est différent des paramètres préconfigurés du client d'application pour un client public ou un client confidentiel, sélectionnez Autre.

  7. Saisissez un nom de client d'application.

  8. Sélectionnez les flux d'authentification que vous souhaitez autoriser dans votre client d'application.

  9. (Facultatif) Configurez l'expiration du jeton.

    1. Spécifiez le délai d'expiration du jeton d'actualisation du client d'application. La valeur par défaut est de 30 jours. Vous pouvez le remplacer par toute valeur comprise entre 1 heure et 10 ans.

    2. Spécifiez le délai d'expiration du jeton d'accès du client d'application. La valeur par défaut est 1 heure. Vous pouvez la remplacer par toute valeur comprise entre 5 minutes et 24 heures.

    3. Spécifiez le délai d'expiration du jeton d'identification du client d'application. La valeur par défaut est 1 heure. Vous pouvez la remplacer par toute valeur comprise entre 5 minutes et 24 heures.

      Important

      Si vous utilisez l'interface utilisateur hébergée et configurez des jetons de moins d'une heure, l'utilisateur final sera en mesure d'utiliser des jetons basés sur le cookie de sa session qui est actuellement fixée à une heure.

  10. Choisissez Générer un secret client pour qu'Amazon Cognito génère un code secret client pour vous. Les secrets des clients sont généralement associés à des clients confidentiels.

  11. Indiquez si vous voulez activer la révocation de jetons pour ce client d'application. Cela augmentera la taille des jetons. Pour plus d'informations, consultez Révocation des jetons.

  12. Indiquez si vous voulez Empêcher les messages d'erreur révélant l'existence de l'utilisateur ce client d'application. Amazon Cognito répondra aux demandes de connexion des utilisateurs inexistants avec un message générique indiquant que le nom d'utilisateur ou le mot de passe était incorrect.

  13. (Facultatif) Configurez des autorisations de lecture et d'écriture d'attributs pour ce client d'application. Votre client d'application peut être autorisé à lire et à écrire un sous-ensemble limité du schéma d'attribut de votre groupe d'utilisateurs.

  14. Choisissez Créer.

  15. Notez l'ID du client. Cela permettra d'identifier le client de l'application dans les demandes d'inscription et de connexion.

Configurer l'application.

  1. Dans Intégration d'applications, sélectionnez votre client d'application sous Clients d'application. Vérifiez vos informations d'interface hébergée actuelles.

  2. Ajoutez une URL de rappel sous Autoriser les URL de rappel. Une URL de rappel est où l'utilisateur est redirigé après l'aboutissement de la connexion.

  3. Ajoutez une URL de déconnexion sous URL de déconnexion autorisées. Une URL de déconnexion est où l'utilisateur est redirigé après la déconnexion.

  4. Ajoutez au moins une des options répertoriées dans la liste des fournisseurs d'identité.

  5. Sous Types d'octroi OAuth 2.0, sélectionnez Octroi de code d'autorisation pour renvoyer un code d'autorisation qui est ensuite remplacé par des jetons de groupe d'utilisateurs. Étant donné que les jetons ne sont jamais exposés directement à un utilisateur final, ils sont moins susceptibles d'être compromis. Toutefois, une application personnalisée est requise au niveau du backend pour échanger le code d'autorisation contre des jetons de groupe d'utilisateurs. Pour des raisons de sécurité, nous vous recommandons d'utiliser ce flux d'octroi de code d'autorisation avec une PKCE (Proof Key for Code Exchange) pour les applications mobiles.

  6. Sous Types d'octrois OAuth 2.0, sélectionnez Octroi implicite pour récupérer les jetons Web JSON (JWT) du groupe d'utilisateurs à partir d'Amazon Cognito. Vous pouvez utiliser ce flux lorsqu'il n'y a pas de backend disponible pour échanger un code d'autorisation contre des jetons. C'est également utile pour déboguer les jetons.

  7. Vous pouvez activer les octrois Code d'autorisation et Code implicite, puis utiliser chaque octroi selon vos besoins. Si vous ne sélectionnez pas l'octroi Code d'autorisation ou l'octroi Code implicite et que votre client d'application possède un secret client, vous pouvez activer les octrois Informations d'identification client. Sélectionnez Informations d'identification du client uniquement si votre application doit demander des jetons d'accès pour elle-même et non pas pour un utilisateur.

  8. Sélectionnez les périmètres OpenID Connect que vous souhaitez autoriser pour ce client d'application.

  9. Choisissez Enregistrer les modifications.

Configurer un domaine

  1. Accédez à l'onglet Intégration d'application pour votre groupe d'utilisateurs.

  2. En regard de Domaine, choisissez Actions et sélectionnez Créer un nom de domaine personnalisé ou Créer un nom de domaine Cognito. Si vous avez déjà configuré un domaine de groupe d'utilisateurs, choisissez Delete Cognito domain (Supprimer un nom de domaine Cognito) ou Delete custom domain (Supprimer un nom de domaine personnalisé) avant de créer un domaine personnalisé.

  3. Saisissez un préfixe de domaine disponible à utiliser avec un domaine Cognito. Pour plus d'informations sur la configuration d'un domaine personnalisée, consultez Utilisation de votre propre domaine pour l'interface utilisateur hébergée.

  4. Choisissez Créer.

Pour afficher votre page de connexion

Vous pouvez afficher l'interface utilisateur hébergée avec une page Web de connexion à l'URL suivante. Notez le response_type. Dans ce cas, response_type=code pour l'octroi de code d'autorisation.

https://<your_domain>/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>

Vous pouvez afficher la page Web d'interface utilisateur de connexion hébergée à l'URL suivante pour l'octroi de code implicite où response_type = token. Après une connexion réussie, Amazon Cognito renvoie des jetons de groupe d'utilisateurs à la barre d'adresse de votre navigateur web.

https://<your_domain>/login?response_type=token&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>

Vous pouvez trouver les jetons d'identité JWT (JSON Web Token) juste après le paramètre #idtoken= dans la réponse.

Voici un exemple de réponse à partir d'une demande d'octroi implicite. Votre chaîne de jetons d'identité sera beaucoup plus longue.

https://www.example.com/#id_token=123456789tokens123456789&expires_in=3600&token_type=Bearer

Si les modifications de vos pages d'interface utilisateur hébergées n'apparaissent pas immédiatement, patientez quelques minutes, puis actualisez la page. Les jetons de groupe d'utilisateurs Amazon Cognito sont signés à l'aide d'un algorithme RS256. Vous pouvez décoder et vérifier les jetons de groupe d'utilisateurs à l'aide d'AWS Lambda. Consultez Decode and verify Amazon Cognito JWT tokens sur le site web GitHub d'AWS.

Votre domaine s'affiche dans la page Domain name (Nom de domaine). Votre ID de client d'application et votre URL de rappel s'affichent à la page App client settings (Paramètres de client d'application).

Note

L'interface utilisateur hébergée d'Amazon Cognito ne prend pas en charge le flux d'authentification personnalisé.