Gestion de l'interface utilisateur hébergée et du serveur d'autorisation - 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.

Gestion de l'interface utilisateur hébergée et du serveur d'autorisation

Un groupe d'utilisateurs Amazon Cognito avec un domaine est un serveur d'autorisation OAuth conforme à la norme -2.0 et une interface utilisateur ready-to-use hébergée (UI) pour l'authentification. Le serveur d'autorisation achemine les demandes d'authentification, émet et gère les jetons JSON Web (JWTs) 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 avec votre propre logo et CSS personnalisation. Pour plus d’informations sur les composants de l’interface utilisateur hébergée et du serveur d’autorisation, consultez Points de terminaison du groupe d'utilisateurs et référence de l'interface utilisateur hébergée.

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, vous devez utiliser le AWS Amplify CLI pour ajouter la Auth catégorie à 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 vous pouvez fédérer les utilisateurs via un point de terminaison OAuth 2.0 qui redirige vers un fournisseur de connexion sociale, tel que Facebook, Google, Amazon ou Apple. Une fois qu'un utilisateur s'est authentifié avec succès auprès du fournisseur social, AWS Amplify crée un nouvel utilisateur dans votre groupe d'utilisateurs si nécessaire, puis fournit le OIDC jeton 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 systèmes non authentifiés et authentifiés par jeton. APIs Un client confidentiel fonctionne généralement à partir d'une application installée sur un serveur central à laquelle vous confiez les secrets et les API informations d'identification du client, 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 un rappel URL sous Callback (s) autorisé URL (s). Un rappel URL est l'endroit où l'utilisateur est redirigé après une connexion réussie.

  3. Ajoutez une déconnexion URL sous Déconnexion (s) autorisée URL (s). Une déconnexion URL est l'endroit vers lequel votre utilisateur est redirigé après s'être déconnecté.

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

  5. Sous les types de subvention OAuth 2.0, sélectionnez Attribution de code d'autorisation pour renvoyer un code d'autorisation qui est ensuite échangé contre des jetons du pool 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 le flux d'octroi du code d'autorisation, ainsi que la clé de preuve pour code Exchange (PKCE), pour les applications mobiles.

  6. Sous les types de subvention OAuth 2.0, sélectionnez Attribution implicite pour que les jetons JSON Web du pool d'utilisateurs (JWT) vous soient renvoyés par 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. Sélectionnez Create (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

  • Le premier rappel de URL 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 connexion URL 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. Dans ces cas, vous devez personnaliser celui URL que votre application invoque lorsqu'elle connecte vos utilisateurs. Pour de plus amples informations sur les clés et les valeurs de paramètre, veuillez consulter Points de terminaison du groupe d'utilisateurs et référence de l'interface utilisateur hébergée.

La page Web de connexion à l'interface utilisateur hébergée utilise le URL format 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 le client de l'applicationIDs, son rappelURLs, ses étendues autorisées et les autres configurations sous Clients d'application et analyses.

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 un exemple URL qui contourne l'interface utilisateur hébergée, consultezSAMLlancement de session dans les groupes d'utilisateurs Amazon Cognito.

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

Vous pouvez consulter la page Web de connexion à l'interface utilisateur hébergée avec ce qui suit URL pour l'attribution 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 redirectionURL.

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

Ce qu'il faut savoir sur l'interface utilisateur hébergée et le serveur d'autorisation

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 pool d'utilisateurs Amazon Cognito sont signés à l'aide d'un RS256 algorithme. 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 JWT Cognito sur. GitHub

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

L'interface utilisateur hébergée nécessite un chiffrement pendant le transit. Les domaines du groupe d'utilisateurs fournis par Amazon Cognito nécessitent une TLS version minimale de 1.2. Les domaines personnalisés sont pris en charge mais ne nécessitent pas TLS la version 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 TLS exigences du domaine de votre groupe d'utilisateurs.

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

L'interface utilisateur hébergée par Amazon Cognito ne prend pas en charge les politiques d'origine personnalisées de partage de ressources entre origines (CORS). Une CORS politique 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 CORS politique dans le frontend Web de votre application. Amazon Cognito renvoie un en-tête de Access-Control-Allow-Origin: * réponse aux demandes adressées aux points de terminaison suivantsOAuth.

Cookies de l'interface utilisateur hébergée et du serveur d'autorisation

Les points de terminaison du groupe d'utilisateurs Amazon Cognito installent des cookies dans les navigateurs des utilisateurs. Les cookies sont conformes aux exigences de certains navigateurs selon lesquelles les sites ne placent pas de cookies tiers. Ils s'appliquent uniquement aux points de terminaison de votre groupe d'utilisateurs et incluent les éléments suivants :

  • Un XSRF-TOKEN cookie pour chaque demande.

  • csrf-stateCookie destiné à assurer la cohérence de la session lorsqu'un utilisateur est redirigé.

  • Cookie de cognito session qui conserve les tentatives de connexion réussies pendant une heure.

Dans iOS, vous pouvez bloquer tous les cookies. Ce paramètre n'est pas compatible avec l'interface utilisateur hébergée. Pour travailler avec les utilisateurs susceptibles d'activer ce paramètre, intégrez l'authentification du groupe d'utilisateurs dans une application iOS native dotée d'un AWS SDK. Dans ce scénario, vous pouvez créer votre propre stockage de session qui n'est pas basé sur les cookies.