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 :
-
Interface utilisateur hébergée IdPs, types de subventionsURLs, rappel et personnalisation
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
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 queHTTP
, sauf pourhttp://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
ouphone_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 leDefaultRedirectURI
paramètre d'une UpdateUserPoolClientAPIdemande CreateUserPoolClientou. Il URL doit également être membre du clientCallbackURLs
for your app. Amazon Cognito redirige les sessions authentifiées vers ceci lorsque : URL-
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. -
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éeopenid
. La portéeopenid
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éponseuserInfo
à 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 quephone
,email
ouprofile
, le jeton d’identification etuserInfo
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éclamationsphone_number
etphone_number_verified
. Cette portée peut uniquement être demandée avec le paramètre scopeopenid
. -
Le paramètre scope
email
accorde l’accès aux réclamationsemail
etemail_verified
. Cette portée peut uniquement être demandée avec le paramètre scopeopenid
. -
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 scopeopenid
.
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
etprofile
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
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-idMyClientID
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