

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.

# Utilisation des attributs utilisateur
<a name="user-pool-settings-attributes"></a>

Les attributs sont des éléments d'information, comme le nom, l'adresse e-mail et le numéro de téléphone, qui vous aident à identifier des utilisateurs individuels. Un nouveau groupe d'utilisateurs possède un ensemble d'*attributs standard* par défaut. Vous pouvez également ajouter des attributs personnalisés à la définition de votre groupe d'utilisateurs dans le AWS Management Console. Cette rubrique décrit ces attributs en détail et vous donne des conseils sur la configuration du groupe d'utilisateurs.

Ne stockez pas toutes les informations sur vos utilisateurs dans des attributs. Par exemple, conservez les données utilisateur qui changent fréquemment, telles que les statistiques d'utilisation ou les scores de jeu, dans un magasin de données distinct, comme Amazon Cognito Sync ou Amazon DynamoDB.

Nettoyez les entrées pour les valeurs des chaînes d'attributs utilisateur avant de les soumettre à votre groupe d'utilisateurs. L'une des méthodes pour analyser les valeurs d'attributs utilisateur proposées consiste à utiliser un déclencheur Lambda, tel que la [pré-inscription](user-pool-lambda-pre-sign-up.md).

**Note**  
Certains documents et normes font référence aux attributs en tant que *membres*.

**Topics**
+ [Attributs standard](#cognito-user-pools-standard-attributes)
+ [Noms d'utilisateur et noms d'utilisateurs préférés](#user-pool-settings-usernames)
+ [Personnalisation des attributs de connexion](#user-pool-settings-aliases)
+ [Attributs personnalisés](#user-pool-settings-custom-attributes)
+ [Autorisations d'attributs et de portées](#user-pool-settings-attribute-permissions-and-scopes)

## Attributs standard
<a name="cognito-user-pools-standard-attributes"></a>

Amazon Cognito attribue à tous les utilisateurs un ensemble d'attributs standard en fonction de la [Spécification OpenID Connect](http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims). Par défaut, les valeurs des attributs standard et personnalisés peuvent être des chaînes d'une longueur maximale de 2 048 caractères, mais certaines d'entre elles présentent des restrictions de format. 

Les attributs standard sont les suivants :
+ `name`
+ `family_name`
+ `given_name`
+ `middle_name`
+ `nickname`
+ `preferred_username`
+ `profile`
+ `picture`
+ `website`
+ `gender`
+ `birthdate`
+ `zoneinfo`
+ `locale`
+ `updated_at`
+ `address`
+ `email`
+ `phone_number`
+ `sub`

À l'exception de `sub`, les attributs standard sont facultatifs par défaut pour tous les utilisateurs. Pour rendre un attribut obligatoire, pendant le processus de création du groupe d'utilisateurs, cochez la case **Obligatoire** en regard de l'attribut. Amazon Cognito attribue une valeur d'identifiant utilisateur unique à l'attribut `sub` de chaque utilisateur. Seuls les attributs **e-mail** et **phone\$1number** peuvent être vérifiés.

Les attributs standard possèdent des propriétés prédéfinies que vous pouvez afficher dans le `SchemaAttributes` paramètre d'une [réponse d'DescribeUserPool API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPool.html#API_DescribeUserPool_ResponseSyntax). Vous pouvez définir des valeurs personnalisées pour ces propriétés d'attribut, telles que le type de données, la mutabilité et les contraintes de longueur. Pour modifier les propriétés des attributs standard, définissez leurs valeurs personnalisées dans le [paramètre CreateUserPool Schema](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema). Le schéma est également l'endroit où vous définissez les attributs requis. Vous ne pouvez pas modifier les propriétés des attributs standard lorsque vous créez des groupes d'utilisateurs dans la console Amazon Cognito.

**Note**  
 Quand vous marquez un attribut standard comme étant **Required** (Obligatoire), un utilisateur ne peut pas s'enregistrer s'il ne fournit pas de valeur pour cet attribut. Pour créer des utilisateurs et ne pas attribuer de valeurs aux attributs requis, les administrateurs peuvent utiliser l'[AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)API. Après avoir créé un groupe d'utilisateurs, vous ne pouvez pas changer un attribut obligatoire en attribut non obligatoire, et inversement.Détails des attributs standard et restrictions de format

**birthdate**  
La valeur doit être une date valide de 10 caractères au format YYYY-MM-DD.

**e-mail**  
Les utilisateurs et les administrateurs peuvent vérifier les valeurs des adresses e-mail.  
Un administrateur disposant Compte AWS des autorisations appropriées peut modifier l'adresse e-mail de l'utilisateur et la marquer comme vérifiée. Marquez une adresse e-mail comme vérifiée à l'aide de l'[AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API ou de la commande [admin-update-user-attributes](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-user-attributes.html) AWS Command Line Interface (AWS CLI). Avec cette commande, l'administrateur peut affecter à l'attribut `email_verified` la valeur `true`. Vous pouvez également modifier un utilisateur dans le menu **Utilisateurs** de la console Amazon Cognito pour marquer une adresse e-mail comme vérifiée.  
La valeur doit être une [chaîne d'adresse e-mail valide](https://datatracker.ietf.org/doc/html/rfc3696#section-3) suivant le format d'e-mail standard avec le symbole @ et le domaine, d'une longueur maximale de 2 048 caractères.

**phone\$1number**  
Un utilisateur doit fournir un numéro de téléphone si l'authentification multifacteur (MFA) par SMS est active. Pour de plus amples informations, veuillez consulter [Ajout de l’authentification MFA à un groupe d’utilisateurs](user-pool-settings-mfa.md).  
Les utilisateurs et les administrateurs peuvent vérifier les numéros de téléphone.  
Un administrateur disposant des Compte AWS autorisations appropriées peut modifier le numéro de téléphone de l'utilisateur et le marquer comme vérifié. Marquez un numéro de téléphone comme vérifié à l'aide de l'[AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API ou de la [admin-update-user-attributes](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-user-attributes.html) AWS CLI commande. Avec cette commande, l'administrateur peut affecter à l'attribut `phone_number_verified` la valeur `true`. Vous pouvez également modifier un utilisateur dans le menu **Utilisateurs** de la console Amazon Cognito pour marquer un numéro de téléphone comme vérifié.  
Les numéros de téléphone doivent suivre ces règles de formatage : un numéro de téléphone doit commencer par le signe plus (**\$1**), suivi immédiatement de l'indicatif du pays. Ils peuvent uniquement contenir le signe **\$1** et des chiffres. Supprimez tous les autres caractères d'un numéro de téléphone, tels que des parenthèses, des espaces ou des tirets (**-**), avant de soumettre la valeur au service. Par exemple, un numéro de téléphone basé aux États-Unis doit respecter ce format : **\$114325551212**.

**preferred\$1username**  
Vous pouvez sélectionner `preferred_username` au besoin ou en tant qu'alias, mais pas les deux. S'il s'`preferred_username`agit d'un alias, vous pouvez envoyer une demande à l'opération [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)API et ajouter la valeur de l'attribut après avoir confirmé l'utilisateur.

**sub**  
Indexez et recherchez vos utilisateurs en fonction de l'attribut `sub`. L'attribut `sub` est un identifiant utilisateur unique au sein de chaque groupe d'utilisateurs. Les utilisateurs peuvent modifier des attributs tels que `phone_number` et `email`. L'attribut `sub` a une valeur fixe. Pour plus d'informations sur comment trouver des utilisateurs, consultez [Gestion et recherche de comptes d'utilisateur](how-to-manage-user-accounts.md).

### Afficher les attributs requis
<a name="how-to-edit-standard-attributes"></a>

Procédez comme suit pour afficher les attributs obligatoires d'un groupe d'utilisateurs.

**Note**  
Vous ne pouvez pas modifier les attributs obligatoires après avoir créé un groupe d'utilisateurs.

**Pour afficher les attributs requis**

1. Accédez à [Amazon Cognito](https://console.aws.amazon.com/cognito/home) dans le. AWS Management Console Si la console vous y invite, entrez vos AWS informations d'identification.

1. Choisissez **Groupes d'utilisateurs**.

1. Choisissez un groupe d'utilisateurs existant dans la liste.

1. Choisissez le menu **d'inscription**.

1. Dans la section **Required attributes** (Attributs obligatoires), consultez les attributs obligatoires de votre groupe d'utilisateurs.

## Noms d'utilisateur et noms d'utilisateurs préférés
<a name="user-pool-settings-usernames"></a>

La valeur `username` est un attribut distinct, à ne pas confondre avec l'attribut `name`. Chaque utilisateur a un attribut `username`. Amazon Cognito génère automatiquement un nom d'utilisateur pour les utilisateurs fédérés. Vous devez fournir un attribut `username` pour créer un utilisateur local dans l'annuaire Amazon Cognito. Après avoir créé un utilisateur, vous ne pouvez pas modifier la valeur de l'attribut `username`.

Les développeurs peuvent utiliser l'attribut `preferred_username` pour donner aux utilisateurs des noms d'utilisateur qu'ils peuvent modifier. Pour de plus amples informations, veuillez consulter [Personnalisation des attributs de connexion](#user-pool-settings-aliases).

Si votre application ne nécessite pas de nom d'utilisateur, vous n'avez pas besoin de demander aux utilisateurs d'en fournir un. Votre application peut créer un nom d'utilisateur unique pour les utilisateurs en arrière-plan. Cela peut s'avérer utile si vous souhaitez que les utilisateurs s'enregistrent et se connectent avec une adresse e-mail et un mot de passe. Pour de plus amples informations, veuillez consulter [Personnalisation des attributs de connexion](#user-pool-settings-aliases).

L'attribut `username` doit être unique au sein d'un groupe d'utilisateurs. Un `username` peut être réutilisé, mais seulement après avoir été supprimé et que plus personne ne l'utilise. Pour plus d'informations sur les contraintes de chaîne appliquées aux `username` attributs, consultez la propriété *username* d'une demande d'[SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-Username)API.

## Personnalisation des attributs de connexion
<a name="user-pool-settings-aliases"></a>

Lorsque vous créez un groupe d'utilisateurs, vous pouvez configurer des *attributs de nom d'utilisateur* si vous souhaitez que vos utilisateurs s'inscrivent et se connectent avec une adresse e-mail ou un numéro de téléphone en guise de nom d'utilisateur. Vous pouvez également configurer des *attributs d'alias* pour permettre à vos utilisateurs d'inclure plusieurs attributs au moment de s'inscrire pour se connecter ensuite avec un nom d'utilisateur, un nom d'utilisateur préféré, une adresse e-mail ou un numéro de téléphone.

**Important**  
Après avoir créé un groupe d'utilisateurs, vous ne pouvez pas modifier ce paramètre.

### Comment choisir entre attributs d'alias et attributs de nom d'utilisateur
<a name="user-pool-settings-aliases-settings"></a>


| Votre exigence | Attributs d'alias | Attributs de nom d'utilisateur | 
| --- |--- |--- |
| Les utilisateurs disposent de plusieurs attributs de connexion | Oui¹ | Non-² | 
| Les utilisateurs doivent vérifier leur adresse e-mail ou leur numéro de téléphone avant de pouvoir se connecter | Oui | Non | 
| Inscrivez les utilisateurs avec des adresses e-mail ou des numéros de téléphone dupliqués et évitez les UsernameExistsException erreurs³ | Oui | Non | 
| Possibilité d'attribuer la même valeur d'attribut d'adresse e-mail ou de numéro de téléphone à plusieurs utilisateurs | Oui⁴ | Non | 

¹ Les attributs de connexion disponibles sont le nom d'utilisateur, l'adresse e-mail, le numéro de téléphone et le nom d'utilisateur préféré.

² Possibilité de se connecter avec une adresse e-mail ou un numéro de téléphone.

³ Votre groupe d'utilisateurs ne génère pas des erreurs `UsernameExistsException` quand les utilisateurs s'enregistrent avec des adresses e-mail ou des numéros de téléphone potentiellement dupliqués, mais sans nom d'utilisateur. Ce comportement est indépendant de l'option **Empêcher les erreurs d'existence de nom d'utilisateur**, qui s'applique aux opérations de connexion, mais pas aux opérations d'inscription.

⁴ Seul le dernier utilisateur ayant vérifié l'attribut peut l'utiliser pour se connecter.

#### Option 1 : plusieurs attributs de connexion (attributs d'alias)
<a name="user-pool-settings-aliases-settings-option-1"></a>

Un attribut est un *alias* lorsque les utilisateurs ont un nom d'utilisateur mais peuvent également se connecter avec cet attribut. Configurez des alias lorsque vous souhaitez permettre à vos utilisateurs de choisir entre leur nom d'utilisateur et d'autres valeurs d'attribut dans le champ nom d'utilisateur de votre formulaire de connexion. L'`username`attribut est une valeur fixe que les utilisateurs ne peuvent pas modifier. Si vous marquez un attribut en tant qu'alias, les utilisateurs peuvent l'utiliser pour se connecter à la place de leur nom d'utilisateur. Les attributs que vous pouvez marquer en tant qu'alias sont l'adresse e-mail, le numéro de téléphone et le nom d'utilisateur préféré. Par exemple, si vous sélectionnez l'adresse e-mail et le numéro téléphone en tant qu'alias pour un groupe d'utilisateurs, les utilisateurs de ce groupe peuvent se connecter en indiquant leur nom d'utilisateur, leur adresse e-mail ou leur numéro de téléphone, suivi de leur mot de passe.

Pour choisir les attributs d'alias, sélectionnez **User name** (Nom d'utilisateur) et au moins une option de connexion supplémentaire lorsque vous créez votre groupe d'utilisateurs.

**Note**  
Quand vous configurez votre groupe d'utilisateurs comme non sensible à la casse, un utilisateur peut utiliser des lettres minuscules ou majuscules pour s'inscrire ou se connecter avec son alias. Pour plus d'informations, consultez le manuel [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)de référence de l'*API des groupes d'utilisateurs Amazon Cognito*.

Si vous sélectionnez une adresse e-mail comme alias, Amazon Cognito n'accepte pas de nom d'utilisateur correspondant à un format d'adresse e-mail valide. De même, si vous sélectionnez un numéro de téléphone comme alias, Amazon Cognito n'accepte pas un nom d'utilisateur pour ce groupe d'utilisateurs qui correspond à un format de numéro de téléphone valide.

**Note**  
Les valeurs d'alias doivent être uniques dans l'ensemble du groupe d'utilisateurs. Si vous configurez un alias pour un numéro de téléphone ou une adresse e-mail, la valeur que vous fournissez peut avoir un état vérifié dans un seul compte. Lors de l'inscription, si votre utilisateur fournit une adresse e-mail ou un numéro de téléphone comme valeur d'alias et qu'un autre utilisateur a déjà utilisé cette valeur d'alias, l'enregistrement aboutit. Toutefois, quand un utilisateur tente de confirmer le compte avec cette adresse e-mail (ou ce numéro de téléphone) et saisit le code valide, Amazon Cognito renvoie une erreur `AliasExistsException`. Cette erreur indique à l'utilisateur qu'un compte avec cette adresse e-mail (ou ce numéro de téléphone) existe déjà. À ce stade, l'utilisateur peut abandonner sa tentative de création du compte et essayer plutôt de réinitialiser le mot de passe de l'ancien compte. Si l'utilisateur poursuit la création du nouveau compte, votre application doit appeler l'API `ConfirmSignUp` avec l'option `forceAliasCreation`. `ConfirmSignUp` avec `forceAliasCreation` déplace l'alias du compte précédent vers le compte nouvellement créé et marque l'attribut comme étant non vérifié dans le compte précédent.

Les numéros de téléphone et les adresses e-mail deviennent des alias actifs pour un utilisateur une fois seulement que l'utilisateur les a vérifiés. Nous vous recommandons d'opter pour la vérification automatique des adresses e-mail et des numéros de téléphone si vous les utilisez comme alias.

Optez pour les attributs d'alias pour éviter des erreurs `UsernameExistsException` en rapport avec les attributs d'adresse e-mail et de numéro de téléphone lors de l'inscription de vos utilisateurs.

Activez l'attribut `preferred_username` afin que votre utilisateur puisse modifier le nom d'utilisateur qu'il utilise pour se connecter sans que sa valeur d'attribut `username` change. Si vous souhaitez configurer cette expérience utilisateur, envoyez la nouvelle valeur `username` en tant que `preferred_username` et choisissez `preferred_username` comme alias. Les utilisateurs peuvent alors se connecter avec la nouvelle valeur qu'ils ont saisie. Si vous sélectionnez `preferred_username` comme alias, votre utilisateur peut fournir cette valeur uniquement quand il confirme un compte. Il ne peut pas fournir cette valeur au moment de l'inscription.

Vous pouvez décider ou non de permettre à l'utilisateur de se connecter avec un ou plusieurs des alias suivants lorsqu'il s'inscrit avec un nom d'utilisateur.
+ Adresse e-mail vérifiée
+ Numéro de téléphone vérifié
+ Nom d'utilisateur préféré

Une fois l'utilisateur inscrit, il peut modifier ces alias.

**Important**  
Lorsque votre groupe d'utilisateurs prend en charge la connexion à l'aide d'alias et que vous souhaitez autoriser ou rechercher un utilisateur, ne l'identifiez pas à l'aide de ses attributs de connexion. L'identifiant utilisateur à valeur fixe `sub` est le seul indicateur cohérent de l'identité de votre utilisateur.

Incluez les étapes suivantes quand vous créez le groupe d'utilisateurs, afin que les utilisateurs puissent se connecter avec un alias.

------
#### [ Phone number or email address (console) ]

Vous devez définir l'adresse e-mail et le numéro de téléphone comme attributs d'alias lorsque vous créez un groupe d'utilisateurs.

**Pour créer un groupe d'utilisateurs avec des alias de nom d'utilisateur dans la console Amazon Cognito**

1. Accédez à [Amazon Cognito](https://console.aws.amazon.com/cognito/home) dans AWS Management Console. Si la console vous y invite, entrez vos AWS informations d'identification.

1. Créez un nouveau groupe d'utilisateurs à l'aide du bouton **Commencer** ou **Créer un groupe d'utilisateurs**.

1. Choisissez les paramètres de l'application dans **Définir votre application**.

1. **Dans **Configurer les options**, sous **Options pour les identifiants de connexion**, cochez la case à côté du **nom d'utilisateur et d'**au moins l'une des autres options, **e-mail** et numéro de téléphone.**

1. Choisissez vos attributs d'alias comme **Attributs obligatoires pour l'inscription.** Dans le formulaire d'inscription à la connexion gérée, Amazon Cognito invite les nouveaux utilisateurs à fournir des valeurs pour les attributs requis.

1. Sous **Ajouter une URL de retour**, configurez une URL de rappel d'application pour la redirection après une connexion gérée.

1. Choisissez **Créer**.

------
#### [ Phone number or email address (API/SDK) ]

Créez un nouveau groupe d'utilisateurs à l'aide de l'opération [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)API. Configurez le `AliasAttributes` paramètre comme indiqué. Vous pouvez supprimer l'`email`entrée si vous souhaitez uniquement des alias de numéro de téléphone, ou supprimer l'`phone_number`entrée si vous ne souhaitez que des alias d'adresse e-mail.

```
"AliasAttributes": [
   "email",
   "phone_number"
],
```

------
#### [ Preferred username (API/SDK) ]

La console Amazon Cognito crée des groupes d'utilisateurs sans `preferred_username` alias. Pour créer des groupes d'utilisateurs avec un `preferred_username` alias, configurez des groupes d'utilisateurs avec des demandes d'[CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)API dans un AWS SDK. Pour permettre la création d'attributs de nom d'utilisateur préférés lors de l'inscription, `preferred_username` définissez-les comme attribut obligatoire. Dans le formulaire d'inscription à la connexion gérée, Amazon Cognito invite les nouveaux utilisateurs à fournir des valeurs pour les attributs requis. Vous *pouvez* `preferred_username` le définir comme attribut obligatoire dans la console Amazon Cognito, mais cela ne le rend pas disponible en tant qu'alias.

**Configurer en tant qu'alias**  
Configurez en `preferred_username` tant qu'alias dans le `AliasAttributes` paramètre d'une `CreateUserPool` demande, comme indiqué. Supprimez de la liste toutes les valeurs que vous ne souhaitez pas utiliser comme attributs d'alias.

```
"AliasAttributes": [
   "email",
   "phone_number",
   "preferred_username"
],
```

**Configurez selon les besoins**  
Dans le formulaire d'inscription à la connexion gérée, Amazon Cognito invite les nouveaux utilisateurs à fournir des valeurs pour les attributs requis. Configurez `preferred_username` selon les besoins dans le `SchemaAttributes` paramètre d'une [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)demande.

Pour définir le nom d'utilisateur préféré comme attribut obligatoire, configurez-le comme indiqué. L'exemple suivant modifie le schéma par défaut de `preferred_username` pour le définir selon les besoins. D'autres paramètres de schéma tels que `AttributeDataType` (valeur par défaut`string`) et `StringAttributeConstraints` (longueur par défaut comprise entre 1 et 99 caractères) prennent des valeurs par défaut.

```
"Schema": [
   {
      "Name": "preferred_username",
      "Required": true
   }
]
```

------

#### Option 2 : adresse e-mail ou numéro de téléphone en tant qu'attribut de connexion (attributs de nom d'utilisateur)
<a name="user-pool-settings-aliases-settings-option-2"></a>

Quand l'utilisateur s'inscrit avec une adresse e-mail ou un numéro de téléphone en guise de nom d'utilisateur, vous pouvez choisir s'il peut s'inscrire uniquement avec une adresse e-mail, uniquement avec un numéro de téléphone, ou avec l'un des deux au choix. 

Pour choisir les attributs du nom d'utilisateur, ne sélectionnez pas le nom d'**utilisateur** comme option de connexion lorsque vous créez votre groupe d'utilisateurs.

L'adresse e-mail et le numéro de téléphone doivent être uniques et ne doivent pas être déjà utilisés par un autre utilisateur. Ils n'ont pas besoin d'être vérifiés. Une fois que l'utilisateur s'est inscrit avec une adresse e-mail ou un numéro de téléphone, il ne peut pas créer de nouveau compte avec la même adresse e-mail ou le même numéro de téléphone. L'utilisateur peut uniquement réutiliser le compte existant et réinitialiser son mot de passe, si nécessaire. Toutefois, l'utilisateur peut modifier l'adresse e-mail ou le numéro de téléphone pour une nouvelle adresse e-mail ou un nouveau numéro de téléphone. Si l'adresse e-mail ou le numéro de téléphone ne sont pas déjà en cours d'utilisation, ils deviennent le nouveau nom d'utilisateur.

Lorsque vous sélectionnez l'adresse e-mail et le numéro de téléphone comme attributs de nom d'utilisateur, les utilisateurs peuvent se connecter avec l'un ou l'autre, même s'ils fournissent des valeurs pour les deux attributs. Le nom d'utilisateur de connexion est basé sur la valeur que vous transmettez dans le `Username` paramètre de [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-Username).

**Note**  
Si un utilisateur s'inscrit avec une adresse e-mail comme nom d'utilisateur, il peut modifier ce dernier et utiliser une autre adresse e-mail. En revanche, il ne peut pas remplacer l'adresse e-mail par un numéro de téléphone. S'il s'inscrit avec un numéro de téléphone, il peut modifier le nom d'utilisateur en spécifiant un autre numéro de téléphone. En revanche, il ne peut remplacer le numéro de téléphone par une adresse e-mail.

Procédez comme suit pendant la création du groupe d'utilisateur pour configurer l'inscription et la connexion avec une adresse e-mail ou un numéro de téléphone.

------
#### [ Username attributes (console) ]

La procédure suivante crée un groupe d'utilisateurs avec des attributs de nom d'utilisateur d'adresse e-mail ou de numéro de téléphone. La différence dans le processus relatif aux attributs de nom d'utilisateur dans la console Amazon Cognito réside dans le fait que vous ne définissez pas également le **nom d'utilisateur** comme attribut de connexion.

**Pour créer un groupe d'utilisateurs avec des attributs de nom d'utilisateur dans la console Amazon Cognito**

1. Accédez à [Amazon Cognito](https://console.aws.amazon.com/cognito/home) dans AWS Management Console. Si la console vous y invite, entrez vos AWS informations d'identification.

1. Créez un nouveau groupe d'utilisateurs à l'aide du bouton **Commencer** ou **Créer un groupe d'utilisateurs**.

1. Choisissez les paramètres de l'application dans **Définir votre application**.

1. Dans **Configurer les options**, sous **Options pour les identifiants de connexion**, sélectionnez les attributs de votre nom d'utilisateur : **e-mail**, **numéro de téléphone** ou les deux. Laissez le **nom d'utilisateur** décoché.

1. Il est recommandé de sélectionner les attributs de votre nom d'utilisateur comme **Attributs obligatoires pour l'inscription**. Dans le formulaire d'inscription à la connexion gérée, Amazon Cognito invite les nouveaux utilisateurs à fournir des valeurs pour les attributs requis. Si vous ne définissez pas les attributs de votre nom d'utilisateur comme requis, Amazon Cognito n'invite pas les nouveaux utilisateurs à fournir des valeurs pour ces attributs. Dans ce scénario, vous devez configurer votre application pour collecter et envoyer des adresses e-mail ou des numéros de téléphone pour chaque utilisateur avant qu'il ne puisse se connecter.

1. Sous **Ajouter une URL de retour**, configurez une URL de rappel d'application pour la redirection après une connexion gérée.

1. Choisissez **Créer**.

------
#### [ Username attributes (API/SDK) ]

Dans une [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)demande, configurez le `UsernameAttributes` paramètre comme indiqué. Pour autoriser la connexion uniquement avec des noms d'utilisateur d'adresse e-mail, spécifiez-le `email` uniquement dans cette liste. Pour autoriser la connexion uniquement avec des noms d'utilisateur comportant un numéro de téléphone, spécifiez uniquement. `phone_number` Ce paramètre remplace le nom d'utilisateur en tant qu'option de connexion.

```
"UsernameAttributes": [ 
   "email",
   "phone_number"
],
```

------

Lorsque vous configurez les attributs du nom d'utilisateur, vous pouvez effectuer des demandes d'[SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API qui transmettent une adresse e-mail ou un numéro de téléphone dans le `username` paramètre. Voici le comportement de l'opération d'`SignUp`API de code avec les attributs de nom d'utilisateur.
+ Si la `username` chaîne est au format d'adresse e-mail valide, par exemple`user@example.com`, le groupe d'utilisateurs remplit automatiquement l'`email`attribut de l'utilisateur avec la `username` valeur.
+ Si la `username` chaîne est au format de numéro de téléphone valide, par exemple`+12065551212`, le groupe d'utilisateurs remplit automatiquement l'`phone_number`attribut de l'utilisateur avec la `username` valeur.
+ Si le format de la chaîne `username` ne correspond pas à une adresse e-mail ou à un numéro de téléphone, l'API `SignUp` renvoie une exception.
+ Si la chaîne `username` contient une adresse e-mail ou un numéro de téléphone qui est déjà en cours d'utilisation, l'API `SignUp` renvoie une exception.
+ L'`SignUp`API remplit l'`username`attribut avec un [UUID](cognito-terms.md#terms-uuid) pour votre utilisateur. Cet UUID a la même valeur que la demande `sub` du jeton d'identité de l'utilisateur.

Vous pouvez utiliser une adresse e-mail ou un numéro de téléphone à la place du nom d'utilisateur pour toutes les opérations APIs, sauf pour l'[ListUsers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html)opération. Dans les demandes d'`ListUsers`API, vous pouvez spécifier `Filter` un `email` ou`phone_number`. Si vous filtrez par`username`, vous devez fournir le nom d'utilisateur UUID, et non l'adresse e-mail ou le numéro de téléphone.

## Attributs personnalisés
<a name="user-pool-settings-custom-attributes"></a>

Vous pouvez ajouter jusqu'à 50 attributs personnalisés à votre groupe d'utilisateurs. Vous pouvez leur appliquer une longueur minimale et/ou maximale. Toutefois, la longueur maximale pour un attribut personnalisé ne peut pas dépasser 2 048 caractères. Le nom d'un attribut personnalisé doit correspondre au modèle d'expression régulière décrit dans le `Name` paramètre de [SchemaAttributeType](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SchemaAttributeType.html).

**Chaque attribut personnalisé possède les caractéristiques suivantes :**
+ Vous pouvez le définir sous la forme d'une chaîne, d'un nombre, d'un booléen ou `DateTime` d'un objet. Amazon Cognito écrit des valeurs d'attribut personnalisées dans le jeton d'identification uniquement sous forme de chaînes.
**Note**  
Dans la console Amazon Cognito, vous pouvez ajouter des attributs personnalisés uniquement des types de données de type chaîne et numérique. Des options supplémentaires telles que les types de données booléens et `DateTime` attributaires ne sont disponibles que dans les `SchemaAttributes` propriétés [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)et les requêtes d'[UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API.
+ Vous ne pouvez pas exiger que les utilisateurs fournissent une valeur pour cet attribut.
+ Vous ne pouvez pas le supprimer ni le modifier après l'avoir ajouté dans le groupe d'utilisateurs.
+ Le nombre maximal de caractères du nom de l'attribut se situe dans la limite acceptée par Amazon Cognito. Pour de plus amples informations, veuillez consulter [Quotas dans Amazon Cognito](quotas.md).
+ Il peut être *mutable* ou *inaltérable*. Vous pouvez écrire une valeur dans un attribut inaltérable seulement quand vous créez un utilisateur. Vous pouvez modifier la valeur d'un attribut mutable si votre client d'application dispose d'une autorisation d'écriture sur cet attribut. Pour plus d’informations, consultez [Autorisations d'attributs et de portées](#user-pool-settings-attribute-permissions-and-scopes).

**Note**  
Dans votre code et dans les paramètres des règles pour [Utilisation du contrôle d'accès basé sur les rôles](role-based-access-control.md), les attributs personnalisés doivent être différenciés des attributs standard par le préfixe `custom:`.

Vous pouvez également ajouter des *attributs de développeur* lorsque vous créez des groupes d'utilisateurs, dans la `SchemaAttributes` propriété de [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html). Les attributs de développeur ont un préfixe `dev:`. Vous ne pouvez modifier les attributs de développeur d'un utilisateur qu'à l'aide AWS d'informations d'identification. Les attributs de développeur sont une fonctionnalité héritée qu'Amazon Cognito a remplacée par des autorisations de lecture/écriture pour les clients de l'application.

Utilisez la procédure suivante pour créer un attribut personnalisé.

**Pour ajouter un attribut personnalisé à l'aide de la console**

1. Accédez à [Amazon Cognito](https://console.aws.amazon.com/cognito/home) dans le. AWS Management Console Si la console vous y invite, entrez vos AWS informations d'identification.

1. Choisissez **Groupes d'utilisateurs**.

1. Choisissez un groupe d'utilisateurs existant dans la liste.

1. Choisissez le menu **d'inscription**, puis dans la section **Attributs personnalisés**, sélectionnez **Ajouter des attributs personnalisés**.

1. Dans la page **Ajouter des attributs personnalisés**, fournissez les informations suivantes sur le nouvel attribut :
   + Entrez un **Nom**.
   + Sélectionnez un** Type** de **Chaîne** ou **Numéro**.
   + Saisissez une longueur de chaîne ou valeur numérique **Minimale**.
   + Saisissez une longueur de chaîne ou valeur numérique **Maximale**.
   + Sélectionnez **Mutable** si vous souhaitez autoriser les utilisateurs à modifier la valeur d'un attribut personnalisé après qu'ils ont défini la valeur initiale.

1. Sélectionnez **Enregistrer les modifications**.

## Autorisations d'attributs et de portées
<a name="user-pool-settings-attribute-permissions-and-scopes"></a>

Pour chaque client d'application, vous pouvez définir des autorisations de lecture et d'écriture pour chaque attribut utilisateur. De cette façon, vous pouvez contrôler l'accès dont dispose une application pour lire et modifier chaque attribut que vous stockez pour vos utilisateurs. Par exemple, vous pouvez avoir un attribut personnalisé qui indique si un utilisateur est un client payant ou non. Vos applications peuvent éventuellement voir cet attribut mais pas le modifier directement. Au lieu de cela, vous devez mettre à jour cet attribut à l'aide d'un outil d'administration ou d'un processus en arrière-plan. Vous pouvez définir des autorisations pour les attributs utilisateur à partir de la console Amazon Cognito, de l'API Amazon Cognito ou de l'interface AWS CLI. Par défaut, aucun nouvel attribut personnalisé n'est disponible tant que vous ne définissez pas les autorisations de lecture et d'écriture correspondantes. Par défaut, lorsque vous créez un nouveau client d'application, vous accordez à votre application des autorisations de lecture et d'écriture pour tous les attributs standard et personnalisés. Pour limiter votre application à la seule quantité d'informations dont elle a besoin, attribuez des autorisations spécifiques aux attributs dans la configuration de votre client d'application.

Il est recommandé de spécifier les autorisations de lecture et d'écriture des attributs lorsque vous créez un client d'application. Accordez à votre client d'application l'accès à l'ensemble minimal d'attributs utilisateur dont vous avez besoin pour le fonctionnement de votre application.

**Note**  
[DescribeUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolClient.html)renvoie uniquement des valeurs pour `ReadAttributes` et `WriteAttributes` lorsque vous configurez des autorisations client de l'application autres que celles par défaut.

**Pour mettre à jour les autorisations d'attribut (AWS Management Console)**

1. Accédez à [Amazon Cognito](https://console.aws.amazon.com/cognito/home) dans le. AWS Management Console Si la console vous y invite, entrez vos AWS informations d'identification.

1. Choisissez **Groupes d'utilisateurs**.

1. Choisissez un groupe d'utilisateurs existant dans la liste.

1. Choisissez le menu **Clients de l'application** et choisissez un client d'application dans la liste.

1. Dans l'onglet **Autorisations relatives aux attributs**, choisissez **Modifier**.

1. Dans la page **Modifier les autorisations de lecture et d'écriture des attributs**, configurez vos autorisations de lecture et d'écriture, puis choisissez **Enregistrez les modifications**.

Répétez ces étapes pour chaque client d'application qui utilise l'attribut personnalisé.

Pour chaque client d'application, vous pouvez marquer les attributs comme lisibles ou inscriptibles. Cette règle s'applique aux attributs standard et personnalisés. Votre application peut récupérer la valeur des attributs que vous marquez comme accessibles en lecture, et peut définir ou modifier la valeur des attributs que vous marquez comme accessibles en écriture. Si votre application essaie de définir une valeur pour un attribut qu'elle n'est pas autorisée à écrire, Amazon Cognito renvoie le message. `NotAuthorizedException` [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html)les demandes incluent un jeton d'accès associé à une réclamation de client d'application ; Amazon Cognito renvoie uniquement des valeurs pour les attributs que votre client d'application peut lire. Le jeton d'identification de votre utilisateur provenant d'une application contient uniquement des demandes correspondant aux attributs accessibles en lecture. Tous les clients d'application peuvent écrire les attributs requis par le groupe d'utilisateurs. Vous pouvez définir la valeur d'un attribut dans une demande d'API de groupes d'utilisateurs Amazon Cognito seulement lorsque vous fournissez également une valeur pour tous les attributs requis qui n'ont pas encore de valeur.

Les attributs personnalisés ont des fonctionnalités distinctes pour les autorisations de lecture et d'écriture. Vous pouvez les créer en tant qu'attributs modifiables ou inaltérables pour le groupe d'utilisateurs, et vous pouvez les définir en tant qu'attributs de lecture ou d'écriture pour un client d'application.

Un attribut personnalisé inaltérable peut être mis à jour une seule fois, pendant de la création de l'utilisateur. Vous pouvez renseigner un attribut inaltérable à l'aide des méthodes suivantes.
+ `SignUp` : un utilisateur s'inscrit avec un client d'application qui dispose d'un accès en écriture à un attribut personnalisé inaltérable. Il fournit une valeur pour cet attribut.
+ Connexion avec un IdP tiers : un utilisateur se connecte à un client d'application qui dispose d'un accès en écriture à un attribut personnalisé inaltérable. La configuration de votre groupe d'utilisateurs pour son IdP comporte une règle pour mapper une demande fournie à un attribut inaltérable. C'est possible mais pas pratique, car l'utilisateur ne pourra se connecter qu'une seule fois. Après la première tentative de connexion, Amazon Cognito rejette la tentative en raison de la règle de mappage à un attribut désormais non inscriptible.
+ `AdminCreateUser` : vous fournissez une valeur pour un attribut inaltérable.

### Autorisations d'attribution avec étendues
<a name="user-pool-settings-attribute-scope-based-permissions"></a>

Dans les groupes d'utilisateurs que vous configurez à l'aide d'un AWS SDK ou d'un CDK, de l'API REST ou du AWS CLI, vous pouvez configurer l'accès en lecture ou en écriture au client de l'application avec le champ d'application OIDC. `oidc:profile` `oidc:profile`accorde un accès en lecture ou en écriture aux attributs standard suivants :
+ `name`
+ `family_name`
+ `given_name`
+ `middle_name`
+ `nickname`
+ `preferred_username`
+ `profile`
+ `picture`
+ `website`
+ `gender`
+ `birthdate`
+ `zoneinfo`
+ `locale`

Cette liste contient les attributs standard OIDC moins`email`,, et `phone_number` `sub``address`, tels que définis dans la [section 2.4 de la spécification OIDC](https://openid.net/specs/openid-connect-basic-1_0.html#Scopes). Pour obtenir des informations sur les étendues que vous pouvez attribuer à vos clients d'application, consultez [Scopes, M2M et serveurs de ressources](cognito-user-pools-define-resource-servers.md).

Pour configurer le client de votre application afin qu'il écrive dans les `oidc:profile` attributs concernés, définissez la valeur de [WriteAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-WriteAttributes)to`oidc:profile`, ainsi que tout autre attribut que vous souhaitez autoriser votre application à modifier, dans une demande d'[UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)API [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)ou d'API. De même, pour accorder un accès en lecture à ces attributs, `oidc:profile` augmentez la valeur de [ReadAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-ReadAttributes).

Vous pouvez modifier les autorisations et les règles d'attribut une fois que vous avez créé le groupe d'utilisateurs.