Paramètres spécifiques à l'application avec les clients d'applications - 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.

Paramètres spécifiques à l'application avec les clients d'applications

Un client d’application de groupe d’utilisateurs est une configuration au sein d’un groupe d’utilisateurs qui interagit avec une application mobile ou Web qui s’authentifie auprès d’Amazon Cognito. Les clients de l'application peuvent effectuer des API opérations authentifiées et non authentifiées, et lire ou modifier certains ou tous les attributs de vos utilisateurs. Votre application doit s’identifier auprès du client d’application dans les opérations d’enregistrement, de connexion et de gestion des mots de passe oubliés. Ces API demandes doivent inclure l'auto-identification à l'aide d'un identifiant client d'application et une autorisation avec un secret client facultatif. Vous devez sécuriser tout client IDs ou secret d'application afin que seules les applications clientes autorisées puissent effectuer ces opérations non authentifiées. En outre, si vous configurez votre application pour signer des API demandes authentifiées à l'aide AWS d'informations d'identification, vous devez protéger vos informations d'identification contre toute inspection par les utilisateurs.

Vous pouvez créer plusieurs applications pour un groupe d’utilisateurs. Un client d’application peut être lié à la plateforme de code d’une application ou à un locataire distinct dans votre groupe d’utilisateurs. Par exemple, vous pouvez créer une application pour une application côté serveur et une application Android distincte. Chaque application a son propre ID de client d’application.

Vous pouvez appliquer des paramètres pour les fonctionnalités du groupe d'utilisateurs suivantes au niveau du client de l'application :

Types de client d’application

Lorsque vous créez un client d'application dans Amazon Cognito, vous pouvez prérenseigner les options en fonction des types de OAuth clients standard : client public et client confidentiel. Configurez un client confidentiel avec un secret client. Pour plus d'informations sur les types de clients, consultez IETFRFC6749 #2 .1.

Client public

Un client public s’exécute dans un navigateur ou sur un appareil mobile. Étant donné qu’il ne dispose pas de ressources approuvées côté serveur, il ne possède pas de secret client.

Client confidentiel

Un client confidentiel dispose de ressources côté serveur auxquelles on peut confier un secret client pour les opérations non API authentifiées. L’application peut s’exécuter en tant que démon ou script shell sur votre serveur backend.

Secret client

Un secret client, ou mot de passe client, est une chaîne fixe que votre application doit utiliser dans toutes les API demandes adressées au client de l'application. Votre client d’application doit posséder un secret client pour effectuer des octrois client_credentials. Pour plus d'informations, consultez IETFRFC6749 #2 .3.1.

Vous ne pouvez pas modifier les secrets après avoir créé une application. Vous pouvez créer une nouvelle application avec un nouveau secret, si vous souhaitez effectuer une rotation du secret. Vous pouvez également supprimer une application pour empêcher les applications qui utilisent cet ID de client d’application d’y accéder.

Vous pouvez utiliser un client confidentiel et un secret client avec une application publique. Utilisez un CloudFront proxy Amazon pour ajouter un fichier SECRET_HASH en transit. Pour plus d'informations, consultez la section Protéger les clients publics pour Amazon Cognito à l'aide d'un CloudFront proxy Amazon sur le AWS blog.

JSONjetons Web

Les clients de l'application Amazon Cognito peuvent émettre des jetons JSON Web (JWTs) des types suivants.

Jeton d’identité (ID)

Une déclaration vérifiable indiquant que votre utilisateur est authentifié à partir de votre groupe d’utilisateurs. OpenID Connect (OIDC) a ajouté la spécification du jeton d'identification aux normes des jetons d'accès et d'actualisation définies par OAuth la version 2.0. Le jeton d’identification contient des informations d’identité, telles que les attributs utilisateur, que votre application peut utiliser pour créer un profil utilisateur et fournir des ressources. Pour plus d’informations, consultez Comprendre le jeton d'identité (ID).

Jeton d’accès

Une déclaration vérifiable des droits d’accès de vos utilisateurs. Le jeton d'accès contient des étendues, une fonctionnalité de OIDC et OAuth 2.0. Votre application peut présenter des étendues aux ressources principales et prouver que votre groupe d'utilisateurs a autorisé un utilisateur ou une API machine à accéder aux données à partir de ses propres données utilisateur. Un jeton d’accès avec des portées personnalisées, souvent issu d’une autorisation d’informations d’identification du client M2M, autorise l’accès à un serveur de ressources. Pour plus d’informations, consultez Comprendre le jeton d'accès.

Jeton d’actualisation

Déclaration chiffrée d’authentification initiale que votre application peut présenter à votre groupe d’utilisateurs lorsque les jetons de votre utilisateur expirent. Une demande de jeton d’actualisation renvoie de nouveaux jetons d’accès et d’identification non expirés. Pour plus d’informations, consultez Comprendre le jeton d'actualisation.

Vous pouvez définir l’expiration de ces jetons pour chaque client d’application depuis l’onglet Intégration des applications de votre groupe d’utilisateurs dans la console Amazon Cognito.

Termes du client d’application

Les termes suivants sont les propriétés disponibles des clients d’application dans la console Amazon Cognito.

Rappel autorisé URLs

Un rappel URL indique où l'utilisateur sera redirigé après une connexion réussie. Choisissez au moins un rappel. URL Le rappel URL doit :

  • Sois un absoluURI.

  • Être pré-enregistré auprès d’un client.

  • Ne pas inclure un composant de fragment.

Voir OAuth2.0 - point de terminaison de redirection.

Amazon Cognito exige HTTPS plutôt que HTTP, sauf pour http://localhost à des fins de test uniquement.

Les rappels d'applications URLs tels que myapp://example sont également pris en charge.

Déconnexion autorisée URLs

Une déconnexion URL indique où votre utilisateur doit être redirigé après sa déconnexion.

Autorisations de lecture et d’écriture pour les attributs

Votre groupe d'utilisateurs peut compter de nombreux clients, chacun ayant son propre client d'application et IdPs. Vous pouvez configurer le client de votre application pour qu’il dispose d’un accès en lecture et en écriture uniquement aux attributs utilisateur pertinents pour l’application. Dans des cas tels que l'autorisation machine-to-machine (M2M), vous ne pouvez accorder l'accès à aucun de vos attributs utilisateur.

Considérations relatives à la configuration des autorisations de lecture et d’écriture des attributs
  • Lorsque vous créez un client d'application et que vous ne personnalisez pas les autorisations de lecture et d'écriture des attributs, Amazon Cognito accorde des autorisations de lecture et d'écriture à tous les attributs du groupe d'utilisateurs.

  • Vous pouvez accorder un accès en écriture à des attributs personnalisés immuables. Le client de votre application peut écrire des valeurs dans des attributs immuables lorsque vous créez ou inscrivez un utilisateur. Ensuite, vous ne pouvez pas écrire de valeurs dans des attributs personnalisés immuables pour l’utilisateur.

  • Les clients de l’application doivent disposer d’un accès en écriture aux attributs requis dans votre groupe d’utilisateurs. La console Amazon Cognito définit automatiquement les attributs requis comme étant accessibles en écriture.

  • Vous ne pouvez pas autoriser un client d’application à accéder en écriture à email_verified ou phone_number_verified. Un administrateur de groupe d’utilisateurs peut modifier ces valeurs. Un utilisateur ne peut modifier la valeur de ces attributs que par le biais de la vérification des attributs.

Flux d’authentification

Les méthodes de connexion autorisées par le client de votre application. Votre application peut prendre en charge l'authentification par nom d'utilisateur et mot de passe, le mot de passe distant sécurisé (SRP), l'authentification personnalisée avec des déclencheurs Lambda et l'actualisation des jetons. Pour des raisons de sécurité, utilisez SRP l'authentification comme principale méthode de connexion. L'interface utilisateur hébergée connecte automatiquement les utilisateurs àSRP.

Portées personnalisées

Une règle personnalisée est une règle que vous définissez pour votre propre serveur de ressources dans le Serveur de ressources. Le format est resource-server-identifier/scope. VoirÉscopes, M2M et APIs avec serveurs de ressources.

Redirection par défaut URI

Remplace le redirect_uri paramètre dans les demandes d'authentification des utilisateurs par des tiers IdPs. Configurez ce paramètre du client d'application avec le DefaultRedirectURI paramètre d'une UpdateUserPoolClientAPIdemande CreateUserPoolClientou. Il URL doit également être membre du client CallbackURLs for your app. Amazon Cognito redirige les sessions authentifiées vers ceci lorsque : URL

  1. Un fournisseur d'identité est attribué à votre client d'application et plusieurs rappels URLs sont définis. Votre groupe d'utilisateurs redirige les demandes d'authentification vers le serveur d'autorisation vers la redirection par défaut URI lorsqu'elles n'incluent aucun redirect_uri paramètre.

  2. Un fournisseur d'identité est attribué à votre client d'application et un rappel est URLs défini. Dans ce scénario, il n'est pas nécessaire de définir un rappel URL par défaut. Les demandes qui n'incluent pas de redirect_uri paramètre sont redirigées vers le seul rappel URL disponible.

Fournisseurs d’identité

Vous pouvez choisir certains ou tous les fournisseurs d'identité externes de votre groupe d'utilisateurs (IdPs) pour authentifier vos utilisateurs. Le client d’application peut également n’authentifier que les utilisateurs locaux dans votre groupe d’utilisateurs. Lorsque vous ajoutez un IdP à votre client d’application, vous pouvez générer des liens d’autorisation vers l’IdP et l’afficher sur votre page de connexion de l’interface utilisateur hébergée. Vous pouvez en attribuer plusieurs IdPs, mais vous devez en attribuer au moins une. Pour plus d'informations sur l'utilisation de l'externe IdPs, consultezAjout de la connexion du groupe d'utilisateurs via un tiers.

Portées OpenID Connect

Choisissez un ou plusieurs des paramètres scope OAuth suivants pour spécifier les privilèges d’accès qui peuvent être demandés pour les jetons d’accès.

  • La portée openid déclare que vous souhaitez récupérer un jeton d’identification et l’identifiant unique d’un utilisateur. Il demande également la totalité ou une partie des attributs utilisateur, en fonction des portées supplémentaires de la demande. Amazon Cognito ne renvoie pas de jeton d’identification à moins que vous ne demandiez la portée openid. La portée openid autorise les demandes de jetons d’identification structurels, telles que l’expiration et l’identifiant de clé, et détermine les attributs utilisateur que vous recevez dans une réponse du userInfo point final.

    • Si openid est la seule portée que vous demandez, Amazon Cognito remplit le jeton d’identification avec tous les attributs utilisateur que le client d’application actuel peut lire. La réponse userInfo à un jeton d’accès ayant cette portée seule renvoie tous les attributs utilisateur.

    • Lorsque vous demandez openid avec d’autres portées, telles que phone, email ou profile, le jeton d’identification et userInfo renvoient l’identifiant unique de l’utilisateur et les attributs définis par les portées supplémentaires.

  • Le paramètre scope phone accorde l’accès aux réclamations phone_number et phone_number_verified. Cette portée peut uniquement être demandée avec le paramètre scope openid.

  • Le paramètre scope email accorde l’accès aux réclamations email et email_verified. Cette portée peut uniquement être demandée avec le paramètre scope openid.

  • Le aws.cognito.signin.user.admin champ d'application autorise l'accès aux APIopérations des groupes d'utilisateurs Amazon Cognito qui nécessitent des jetons d'accès, tels que UpdateUserAttributeset. VerifyUserAttribute

  • Le paramètre scope profile accorde l’accès à tous les attributs utilisateurs pouvant être lus par le client. Cette portée peut uniquement être demandée avec le paramètre scope openid.

Pour plus d'informations sur les portées, consultez la liste des OIDCportées standard.

OAuthtypes de subventions

Une OAuth subvention est une méthode d'authentification qui permet de récupérer les jetons du pool d'utilisateurs. Amazon Cognito prend en charge les types suivants d’autorisations. Pour intégrer ces OAuth autorisations dans votre application, vous devez ajouter un domaine à votre groupe d'utilisateurs.

Octroi de code d’autorisation

L’octroi du code d’autorisation génère un code que votre application peut échanger contre des jetons du groupe d’utilisateurs avec le Point de terminaison de jeton. Lorsque vous échangez un code d’autorisation, votre application reçoit des jetons d’ID, d’accès et d’actualisation. Ce OAuth flux, comme l'autorisation implicite, se produit dans les navigateurs de vos utilisateurs. L’attribution d’un code d’autorisation est l’autorisation la plus sécurisée proposée par Amazon Cognito, car les jetons ne sont pas visibles dans les sessions de vos utilisateurs. Au lieu de cela, votre application génère la demande qui renvoie des jetons et peut les mettre en cache dans un espace de stockage protégé. Pour plus d'informations, consultez le code d'autorisation dans IETFRFC6749 #1 .3.1

Note

En tant que meilleure pratique de sécurité dans les applications clientes publiques, activez uniquement le OAuth flux d'octroi de code d'autorisation et implémentez Proof Key for Code Exchange (PKCE) afin de restreindre l'échange de jetons. AinsiPKCE, un client ne peut échanger un code d'autorisation que s'il a fourni au point de terminaison du jeton le même secret que celui présenté dans la demande d'authentification d'origine. Pour plus d'informations surPKCE, voir IETFRFC7636.

Octroi implicite

L’autorisation implicite fournit un jeton d’accès et d’ID, mais pas un jeton d’actualisation, à la session de navigation de votre utilisateur directement depuis le Point de terminaison d’autorisation. Une autorisation implicite supprime l'obligation d'envoyer une demande distincte au point de terminaison du jeton, mais n'est pas compatible avec les jetons d'actualisation PKCE et ne renvoie pas ces jetons. Cette autorisation prend en charge les scénarios de test et l’architecture d’applications qui ne peuvent pas compléter les autorisations autorisation-code. Pour plus d'informations, voir Subvention implicite dans IETFRFC6749 #1 .3.2. Vous pouvez activer à la fois l’autorisation autorisation-code et l’autorisation implicite dans un client d’application, puis utiliser chaque autorisation selon vos besoins.

Autorisation d’informations d’identification du client

Les informations d'identification du client sont accordées pour les communications machine-to-machine (M2M). Les autorisations autorisation-code et implicite émettent des jetons à des utilisateurs humains authentifiés. Les informations d'identification du client accordent une autorisation basée sur le périmètre depuis un système non interactif à un. API Votre application peut demander les informations d’identification du client directement depuis le point de terminaison du jeton et recevoir un jeton d’accès. Pour plus d'informations, consultez la section Informations d'identification du client dans le IETFRFCdocument 6749 #1 .3.4. Vous ne pouvez activer les autorisations client-informations d’identification que dans les clients d’application qui ont un secret client et qui ne prennent pas en charge les autorisations autorisation-code ou implicites.

Note

Comme vous n’invoquez pas le flux d’informations d’identification du client en tant qu’utilisateur, cette autorisation peut uniquement ajouter des portées personnalisées aux jetons d’accès. Une règle personnalisée est une règle que vous définissez pour votre propre serveur de ressources. Les portées par défaut comme openid et profile ne s’appliquent pas aux utilisateurs non humains.

Les jetons d’ID étant une validation des attributs utilisateur, ils ne sont pas pertinents pour les communications M2M, et les autorisations d’informations d’identification du client ne les délivrent pas. Consultez Éscopes, M2M et APIs avec serveurs de ressources.

Les informations d'identification des clients vous permettent d'ajouter des frais à votre AWS facture. Pour plus d’informations, consultez Tarification d’Amazon Cognito.

Création d’un client d’application

AWS Management Console
Pour créer un client d’application (console)
  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.

  7. Saisissez un nom de client d’application.

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

  9. Sélectionnez le flux d’authentification que vous souhaitez autoriser dans votre client d’application.

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

  11. (Facultatif) Effectuez les opérations suivantes si vous souhaitez configurer l’expiration du jeton :

    1. Spécifiez le délai d’expiration du jeton d’actualisation de l’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.

  12. Indiquez si vous voulez activer la révocation de jetons pour ce client d’application. Cela augmentera la taille des jetons émis par Amazon Cognito.

  13. Indiquez si vous voulez Empêcher les erreurs d’existence d’utilisateur pour 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. Si vous souhaitez utiliser l’interface utilisateur hébergée avec ce client d’application, configurez Paramètres de l’interface utilisateur hébergée.

    1. Entrez un ou plusieurs rappels autorisés. URLs Il s'agit du site Web ou de l'application vers URLs lequel vous souhaitez qu'Amazon Cognito redirige vos utilisateurs une fois leur authentification terminée.

    2. Entrez une ou plusieurs déconnexions autorisées. URLs Ce sont URLs ceux que vous souhaitez que votre application accepte dans les demandes adressées auPoint de terminaison de déconnexion.

    3. Choisissez un ou plusieurs Fournisseurs d’identité que vous souhaitez autoriser à inscrire des utilisateurs pour votre application. Vous pouvez choisir n'importe quelle combinaison d'éléments existants IdPs. Vous pouvez authentifier les utilisateurs uniquement auprès de votre groupe d'utilisateurs ou auprès d'un ou de plusieurs tiers IdPs que vous avez configurés dans votre groupe d'utilisateurs.

    4. Choisissez les types de subventions OAuth 2.0 que vous souhaitez que votre client d'application accepte.

      • Sélectionnez Octroi de code d’autorisation pour transmettre à votre application des codes qu’elle pourra échanger contre des jetons avec Point de terminaison de jeton.

      • Sélectionnez Octroi implicite pour transmettre l’ID et les jetons d’accès directement à votre application. Le flux d’octroi implicite expose les jetons directement à vos utilisateurs.

      • Sélectionnez Informations d’identification client pour transmettre des jetons d’accès à votre application en fonction de sa connaissance non pas des informations d’identification de l’utilisateur, mais du secret du client. Le flux d’octroi des informations d’identification du client s’exclut mutuellement du code d’autorisation et des flux d’octroi implicites.

    5. Sélectionnez les Portées OpenID Connect que vous souhaitez autoriser pour ce client d’application. Vous pouvez générer des jetons d'accès dont la aws.cognito.signin.user.admin portée est limitée aux groupes d'utilisateursAPI. Pour des portées supplémentaires, vous devez demander vos jetons d’accès auprès de Point de terminaison de jeton.

    6. Sélectionnez les Portées personnalisées que vous souhaitez autoriser pour ce client d’application. Les étendues personnalisées sont le plus souvent utilisées pour autoriser l'accès à des tiersAPIs.

  15. Configurez Autorisations de lecture et d’écriture pour les attributs pour ce client d’application. Votre client d’application peut être autorisé à lire et à écrire tout ou un sous-ensemble limité du schéma d’attribut de votre groupe d’utilisateurs.

  16. Choisissez Créer un client d’application.

  17. Notez l’ID du client. Cela permettra d’identifier le client de l’application lors des demandes d’inscription et de connexion.

AWS CLI
aws cognito-idp create-user-pool-client --user-pool-id MyUserPoolID --client-name myApp
Note

Utilisez le JSON format pour le rappel et la déconnexion afin URLs d'éviter de les traiter comme CLI des fichiers de paramètres distants :

--callback-urls "["https://example.com"]" --logout-urls "["https://example.com"]"

Consultez la référence des AWS CLI commandes pour plus d'informations : create-user-pool-client

Amazon Cognito user pools API

Générez une CreateUserPoolClientAPIdemande. Vous devez spécifier une valeur pour tous les paramètres auxquels vous ne voulez pas attribuer une valeur par défaut.

Mettre à jour un client d'application de groupe d'utilisateurs (AWS CLI et AWS API)

Au niveau de AWS CLI, entrez la commande suivante :

aws cognito-idp update-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID" --allowed-o-auth-flows-user-pool-client --allowed-o-auth-flows "code" "implicit" --allowed-o-auth-scopes "openid" --callback-urls "["https://example.com"]" --supported-identity-providers "["MySAMLIdP", "LoginWithAmazon"]"

Si la commande aboutit, elle AWS CLI renvoie une confirmation :

{ "UserPoolClient": { "ClientId": "MyClientID", "SupportedIdentityProviders": [ "LoginWithAmazon", "MySAMLIdP" ], "CallbackURLs": [ "https://example.com" ], "AllowedOAuthScopes": [ "openid" ], "ClientName": "Example", "AllowedOAuthFlows": [ "implicit", "code" ], "RefreshTokenValidity": 30, "AuthSessionValidity": 3, "CreationDate": 1524628110.29, "AllowedOAuthFlowsUserPoolClient": true, "UserPoolId": "MyUserPoolID", "LastModifiedDate": 1530055177.553 } }

Consultez la référence des AWS CLI commandes pour plus d'informations : update-user-pool-client.

AWS API: UpdateUserPoolClient

Obtenir des informations sur un client d'application de groupe d'utilisateurs (AWS CLI et AWS API)

aws cognito-idp describe-user-pool-client --user-pool-id MyUserPoolID --client-id MyClientID

Consultez la référence des AWS CLI commandes pour plus d'informations : describe-user-pool-client.

AWS API: DescribeUserPoolClient

Répertorier toutes les informations relatives aux clients de l'application dans un groupe d'utilisateurs (AWS CLI et AWS API)

aws cognito-idp list-user-pool-clients --user-pool-id "MyUserPoolID" --max-results 3

Consultez la référence des AWS CLI commandes pour plus d'informations : list-user-pool-clients.

AWS API: ListUserPoolClients

Suppression d'un client d'application de groupe d'utilisateurs (AWS CLI et AWS API)

aws cognito-idp delete-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID"

Consultez la référence des AWS CLI commandes pour plus d'informations : delete-user-pool-client

AWS API: DeleteUserPoolClient