Étape 2. Ajout d'un client d'application et configuration de l'interface utilisateur hébergée
Une fois que vous avez créé un groupe d'utilisateurs, vous pouvez créer une application afin d'utiliser les pages Web intégrées pour inscrire et connecter les utilisateurs.
- Original console
-
Pour créer une application dans votre groupe d'utilisateurs
-
Accédez à la console Amazon Cognito. Si vous y êtes invité, saisissez vos informations d'identification AWS.
-
Sélectionnez Gérer les groupes d'utilisateurs.
-
Choisissez un groupe d'utilisateurs existant dans la liste ou créez un groupe d'utilisateurs.
-
Dans la barre de navigation sur le côté gauche de la page, choisissez Clients d'application sous Paramètres généraux.
-
Choisissez Ajouter un client d'application.
-
Saisissez un nom pour votre application client.
-
Pour cet exercice, désactivez l'option Générer le secret du client. L'utilisation d'un secret client avec authentification côté client, comme le JavaScript utilisé dans cet exercice, n'est pas sécurisée et déconseillée pour un client d'application de production. Les secrets des clients ne doivent être utilisés que par les applications qui disposent d'un composant d'authentification côté serveur afin de pouvoir sécuriser le secret du client.
-
Choisissez Créer un client d'application.
-
Prenez note de l'ID du client d'application.
-
Sélectionnez Revenir aux détails du groupe.
-
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).
-
Sélectionnez Cognito User Pool (Groupe d'utilisateurs Cognito) en tant que l'un des Fournisseurs d'identité activés.
Pour pouvoir se connecter avec des fournisseurs d'identités (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 selon la description suivante, puis revenir à la page App client settings (Paramètres du client d'application) pour les activer.
-
Saisissez une URL de rappel que le serveur d'autorisation Amazon Cognito utilisera après l'authentification des utilisateurs. Pour une application web, l'URL doit commencer par https://
, comme https://www.example.com
.
Pour une application iOS ou Android, vous pouvez utiliser une URL de rappel telle que myapp://
.
-
Saisissez une URL de déconnexion.
-
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 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.
-
Sous Flux OAuth autorisés, sélectionnez implicit grant (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.
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.
-
Sélectionnez toutes les Règles OAuth autorisées, sauf si vous souhaitez spécifiquement en exclure une.
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.
-
Choisissez Save Changes (Enregistrer les modifications).
-
À la page Domain name (Nom de domaine), saisissez un préfixe de domaine disponible.
-
Notez cette adresse de domaine complète.
-
Choisissez Save Changes (Enregistrer les modifications).
- New console
-
Pour créer une application dans votre groupe d'utilisateurs
-
Accédez à la console Amazon Cognito. Si vous y êtes invité, saisissez vos informations d'identification AWS.
-
Choisissez Groupes d'utilisateurs.
-
Choisissez un groupe d'utilisateurs existant dans la liste ou créez un groupe d'utilisateurs. Si vous créez un nouveau groupe d'utilisateurs, vous serez invité à configurer un client d'application et à configurer l'interface utilisateur hébergée pendant l'assistant.
-
Choisissez l'onglet App integration (Intégration d'applications) pour votre groupe d'utilisateurs.
-
À côté de Domaine, choisissez Actions, puis sélectionnez l'une ou l'autre 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 enter your user pool domain (Supprimer le domaine Cognito) ou Supprimer un nom de domaine personnalisé avant de créer votre nouveau domaine personnalisé.
-
Saisissez un préfixe de domaine disponible à utiliser avec un Domaine Cognito. Pour plus d'informations sur la configuration d'un Custom domain (Domaine personnalisé), consultez Utilisation de votre propre domaine pour l'interface utilisateur hébergée.
-
Choisissez Créer.
-
Naviguez jusqu'à.Intégration d'applications pour le même groupe d'utilisateurs et localisez Clients d'application. Choisissez Créer une application client.
-
Choisissez un type d'application. Certains paramètres recommandés seront fournis en fonction de votre sélection. Une application qui utilise l'interface utilisateur hébergée est une Client public.
-
Saisissez un Nom de client d'application.
-
Pour cet exercice, choisissez Ne générez pas de secret client. Le secret client est utilisé par les applications confidentielles qui authentifient les utilisateurs à partir d'une application centralisée. Dans cet exercice, vous présenterez une page de connexion à l'interface utilisateur hébergée à vos utilisateurs et vous n'aurez pas besoin de secret client.
-
Choisissez Authentication flows (Flux d'authentification) que vous allez autoriser avec votre application. Assurez-vous que USER_SRP_AUTH
a été sélectionné.
-
Personnalisez l'expiration du jeton, Configuration de sécurité avancée, et Permissions de lecture et d'écriture d'attributs si nécessaire. Pour plus d'informations, consultez Configuration des paramètres de l'Application Client.
-
Ajouter une URL de rappel pour votre client d'application. C'est là que vous serez dirigé après l'authentification de l'interface utilisateur hébergée. Vous n'avez pas besoin d'ajouter un URL de déconnexion autorisée jusqu'à ce que vous puissiez implémenter la déconnexion dans votre application.
Pour une application iOS ou Android, vous pouvez utiliser une URL de rappel telle que myapp://
.
-
Sélectionnez les Fournisseurs d'identité pour le client d'application. Au minimum, activez groupe d'utilisateurs Cognito en tant que fournisseur.
Pour se connecter à l'aide de fournisseurs d'identité externes tels que Facebook, Amazon, Google et Apple, ainsi qu'à l'aide de fournisseurs d'identité OpenID Connect (OIDC) ou SAML, il faut d'abord les configurer comme indiqué dans Ajout de la connexion du groupe d'utilisateurs via un tiers, puis retourner à la page Paramètres du client d'application pour les activer.
-
Choisissez Types de subventions OAuth 2.0. 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 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.
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.
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.
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.
-
À moins que vous ne souhaitiez spécifiquement en exclure un, sélectionnez tous les Périmètres OpenID Connect.
-
Sélectionnez n'importe quelle Portée personnalisée que vous avez configurée. Les périmètres personnalisés sont généralement utilisés avec des clients confidentiels.
-
Choisissez Créer.
Pour afficher votre page de connexion
À partir de App client page (Page du client d'application), sélectionnez View hosted UI (Afficher l'interface utilisateur hébergée) pour ouvrir un nouvel onglet de navigateur sur une page de connexion préremplie avec les paramètres d'ID de client d'application, d'étendue, d'octroi et d'URL de rappel.
Vous pouvez afficher manuellement la page Web de connexion de l'interface utilisateur hébergée en utilisant 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.
L'URL suivante est un exemple de réponse à une demande de subvention 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
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 dans la page Paramètres généraux. Si les modifications que vous avez apportées dans la console n'apparaissent pas immédiatement, patientez quelques minutes puis actualisez votre navigateur.
Étape suivante
Étape 3. Ajouter la connexion par réseaux sociaux à un groupe d'utilisateurs (Facultatif)