Configuration et utilisation de l’interface utilisateur hébergée par Amazon Cognito et des points de terminaison de fédération - 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.

Configuration et utilisation de l’interface utilisateur hébergée par Amazon Cognito et des points de terminaison de fédération

Un groupe d'utilisateurs Amazon Cognito avec un domaine est un serveur d'autorisation conforme à OAuth-2.0 et une interface utilisateur ready-to-use hébergée (UI) pour l'authentification. Le serveur d’autorisation route les demandes d’authentification, émet et gère les jetons Web JSON (JWT) et fournit des informations sur les attributs utilisateur. L’interface utilisateur hébergée est une collection d’interfaces Web pour les activités de base d’inscription, de connexion, d’authentification multifactorielle et de réinitialisation de mot de passe dans votre groupe d’utilisateurs. Il s'agit également d'un hub central pour l'authentification auprès des fournisseurs d'identité tiers (IdPs) que vous associez à votre application. Votre application peut invoquer l’interface utilisateur hébergée et les points de terminaison d’autorisation lorsque vous souhaitez authentifier et autoriser les utilisateurs. Vous pouvez adapter l’expérience utilisateur de l’interface utilisateur hébergée à votre marque grâce à votre propre logo et à la personnalisation CSS. Pour plus d’informations sur les composants de l’interface utilisateur hébergée et du serveur d’autorisation, consultez Référence de l’interface utilisateur hébergée et des points de terminaison de la fédération des groupes d’utilisateurs.

Note

L’interface utilisateur hébergée d’Amazon Cognito ne prend pas en charge l’authentification personnalisée avec les déclencheurs Lambda de stimulation d’authentification personnalisée.

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

Si vous ajoutez l'authentification AWS Amplify à 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 AWS Amplify framework. 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 AWS Amplify bibliothèques pour authentifier les utilisateurs auprès de 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.

Les exemples suivants montrent comment AWS Amplify configurer l'interface utilisateur hébergée avec les fournisseurs sociaux dans votre application.

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

Créer un client d’application
  1. Accédez à la console Amazon Cognito. Si vous y êtes invité, entrez vos AWS informations d'identification.

  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 installée sur un serveur central à laquelle vous confiez les secrets du client et les informations d'identification de l'API, et utilise des en-têtes d'autorisation et des AWS Identity and Access Management informations d'identification 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 le flux d’authentification que vous souhaitez autoriser dans votre client d’application.

  9. Configuration deDurée de session du flux d’authentification. Il s’agit du temps dont disposent vos utilisateurs pour terminer chaque défi d’authentification avant l’expiration de leur jeton de session.

  10. (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.

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

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

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

  14. (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.

  15. Choisissez Créer.

  16. 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. Sélectionnez 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.

Affichage de votre page de connexion

Dans la console Amazon Cognito, sélectionnez le bouton View Hosted UI (Afficher l’interface utilisateur hébergée) dans la configuration de votre client d’application, sous App clients and analytics (Clients d’application et analyses) dans l’onglet App integration (Intégration d’applications). Ce bouton vous renvoie vers une page de connexion dans votre interface utilisateur hébergée avec les paramètres de base suivants.

  • ID du client d’application.

  • Demande d’octroi de code d’autorisation

  • Demande pour tous les portées que vous avez activées pour le client d’application actuel

  • Première URL de rappel de la liste pour le client d’application actuel

Le bouton View hosted UI (Afficher l’interface utilisateur hébergée) est utile lorsque vous souhaitez tester les fonctions de base de votre interface utilisateur hébergée. Vous pouvez personnaliser votre URL de connexion avec des paramètres supplémentaires et modifiés. Dans la plupart des cas, les paramètres générés automatiquement du lien View hosted UI (Afficher l’interface utilisateur hébergée) ne correspond pas entièrement aux besoins de votre application. Vous devez alors personnaliser l’URL que votre application appelle lorsqu’elle se connecte à vos utilisateurs. Pour de plus amples informations sur les clés et les valeurs de paramètre, veuillez consulter Référence de l’interface utilisateur hébergée et des points de terminaison de la fédération des groupes d’utilisateurs.

La page Web de connexion de l’interface utilisateur hébergée utilise le format d’URL suivant. Cet exemple demande l’octroi d’un code d’autorisation avec le paramètre response_type=code.

https://<your domain>/oauth2/authorize?response_type=code&client_id=<your app client id>&redirect_uri=<your callback url>

Vous pouvez récupérer la chaîne de domaine de votre groupe d’utilisateurs à partir de l’onglet Intégration d’application. Dans le même onglet, vous pouvez identifier les identifiants des clients de l’application, leurs URL de rappel, leurs portées autorisées et d’autres configurations sous Clients d’application et analytique.

Lorsque vous accédez au point de terminaison /oauth2/authorize avec vos paramètres personnalisés, Amazon Cognito vous redirige vers le point de terminaison /oauth2/login ou, si vous avez un paramètre identity_provider ou idp_identifier, vous redirige en mode silencieux vers la page de connexion de votre IdP. Pour accéder à un exemple d’URL qui contourne l’interface utilisateur hébergée, veuillez consulter Lancement de séance SAML dans les groupes d'utilisateurs Amazon Cognito.

Exemple de demande d’interface utilisateur hébergée pour une autorisation implicite

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://mydomain.us-east-1.amazoncognito.com/authorize?response_type=token&client_id=1example23456789&redirect_uri=https://mydomain.example.com

Les jetons d’identité et d’accès apparaissent sous forme de paramètres ajoutés à votre URL de redirection.

Voici un exemple de réponse à une demande d’octroi implicite.

https://mydomain.example.com/#id_token=eyJraaBcDeF1234567890&access_token=eyJraGhIjKlM1112131415&expires_in=3600&token_type=Bearer

Informations utiles concernant l’interface utilisateur hébergée des groupes d’utilisateurs Amazon Cognito

L’interface utilisateur hébergée et confirmer les utilisateurs en tant qu’administrateurs

Pour les utilisateurs locaux du groupe d’utilisateurs, l’interface utilisateur hébergée est plus efficace lorsque vous configurez votre groupe d’utilisateurs sur Autoriser Cognito à envoyer automatiquement des messages pour vérifier et confirmer. Lorsque vous activez ce paramètre, Amazon Cognito envoie un message contenant un code de confirmation aux utilisateurs qui s’inscrivent. Lorsque vous confirmez plutôt les utilisateurs en tant qu’administrateurs de groupes d’utilisateurs, l’interface utilisateur hébergée affiche un message d’erreur après leur inscription. Dans cet état, Amazon Cognito a créé le nouvel utilisateur, mais n’a pas été en mesure d’envoyer de message de vérification. Vous pouvez toujours confirmer les utilisateurs en tant qu’administrateurs, mais ils peuvent contacter votre service d’assistance après avoir rencontré une erreur. Pour plus d’informations sur la confirmation administrative, consultez Autorisation des utilisateurs à s’inscrire dans votre application, mais en les confirmant en tant qu’administrateur du groupe d’utilisateurs.

Consulter les modifications apportées à la configuration de l’interface utilisateur hébergée

Si les modifications de vos pages d’interface utilisateur hébergées n’apparaissent pas immédiatement, patientez quelques minutes, puis actualisez la page.

Décoder les jetons du groupe d’utilisateurs

Les jetons du groupe d’utilisateurs Amazon Cognito sont signés à l’aide d’un algorithme RS256. Vous pouvez décoder et vérifier les jetons du groupe d'utilisateurs à l'aide AWS Lambda de la section Décoder et vérifier les jetons Amazon Cognito JWT sur. GitHub

L'interface utilisateur hébergée et la version TLS

L'interface utilisateur hébergée nécessite une version TLS minimale de 1.0 et prend en charge la version TLS 1.2. Amazon Cognito gérant la configuration de l'interface utilisateur hébergée et des points de terminaison du serveur d'autorisation, vous ne pouvez pas modifier les exigences TLS du domaine de votre groupe d'utilisateurs.

L’interface utilisateur hébergée et les politiques CORS

L’interface utilisateur hébergée d’Amazon Cognito ne prend pas en charge les politiques de partage de ressources d’origine croisée (CORS). Une politique CORS dans l’interface utilisateur hébergée empêcherait les utilisateurs de transmettre des paramètres d’authentification dans leurs demandes. Implémentez plutôt une politique CORS dans l’interface Web frontale de votre application. Amazon Cognito renvoie un en-tête de réponse Access-Control-Allow-Origin: * aux demandes adressées aux points de terminaison OAuth suivants.