Atributos de grupo de usuários
Os atributos são informações que ajudam a identificar usuários específicos, como nome, endereço de e-mail e número de telefone. Um novo grupo de usuários tem um conjunto padrão de atributos. Você também pode adicionar atributos personalizados à definição do grupo de usuários no AWS Management Console. Este tópico descreve esses atributos detalhadamente e oferece dicas sobre como configurar seu grupo de usuários.
Não armazene todas as informações sobre seus usuários nos atributos. Por exemplo, mantenha os dados do usuário que são alterados com frequência, como estatísticas de uso ou pontuações de jogos, em um repositório de dados separado, como o Amazon Cognito Sync ou o Amazon DynamoDB.
O Amazon Cognito atribui a todos os usuários o seguinte conjunto de atributos padrão com base na Especificação do OpenID Connect
-
address
-
birthdate
-
email
-
family_name
-
gender
-
given_name
-
locale
-
middle_name
-
name
-
nickname
-
phone_number
-
picture
-
preferred_username
-
profile
-
updated_at
-
website
-
zoneinfo
Estes atributos estão disponíveis como atributos opcionais para todos os usuários. Para tornar um atributo obrigatório, durante o processo de criação do grupo de usuários, marque a caixa de seleção Required (Obrigatório) ao lado do atributo.
Quando você marcar um atributo padrão como Required (Obrigatório), o usuário não poderá se inscrever, a menos que forneça um valor para o atributo. Para criar usuários e não fornecer valores aos atributos obrigatórios, os administradores podem usar a API AdminCreateUser. Após a criação de um grupo de usuários, não é possível alternar um atributo entre obrigatório e não obrigatório.
Por padrão, os valores de atributo padrão e personalizados podem ser qualquer string de até 2.048 caracteres, mas alguns valores de atributo, como updated_at
, têm restrições de formatação. Somente email e phone podem ser verificados.
Alguns documentos e padrões se referem a atributos como membros.
Veja algumas outras observações sobre alguns desses campos.
-
Os usuários e administradores podem verificar valores de endereço de e-mail.
Um administrador com permissões adequadas da Conta da AWS pode alterar o endereço de e-mail do usuário, além de marcá-lo como verificado. Marque um endereço de e-mail como verificado com a API AdminUpdateUserAttributes ou o comando admin-update-user-attributes da AWS Command Line Interface (AWS CLI). Com esse comando, o administrador pode alterar o atributo
email_verified
paratrue
. Você também pode editar um usuário na guia Users (Usuários) do AWS Management Console para marcar um endereço de e-mail como verificado. - phone
-
O usuário deverá fornecer um número de telefone se a autenticação multifator (MFA) de SMS estiver ativa. Para mais informações, consulte Adicionar MFA a um grupo de usuários.
Os usuários e administradores podem verificar valores de número de telefone.
Um administrador com permissões adequadas na Conta da AWS pode alterar o número de telefone do usuário, além de marcá-lo como verificado. Marque um endereço de e-mail como verificado com a API AdminUpdateUserAttributes ou o comando admin-update-user-attributes da AWS CLI. Com esse comando, o administrador pode alterar o atributo
phone_number_verified
paratrue
. Você também pode editar um usuário na guia Users (Usuários) do AWS Management Console para marcar um número de telefone como verificado.Importante Os números de telefone devem seguir estas regras de formatação: devem começar com um sinal de mais (
+
), seguido imediatamente do código do país. Um número de telefone pode conter apenas o sinal+
e os dígitos. Remova quaisquer outros caracteres de um número de telefone, como parênteses, espaços ou traços (-
) antes de enviar o valor ao serviço. Por exemplo, um número de telefone dos Estados Unidos deve seguir este formato:+14325551212
. - preferred_username
-
Você pode selecionar
preferred_username
conforme necessário ou como um alias, mas não ambos. Sepreferred_username
for um alias, você poderá usar a API UpdateUserAttributes para adicionar o valor de atributo assim que confirmar o usuário.
Exibir atributos obrigatórios
Siga o procedimento abaixo a fim de exibir atributos obrigatórios para um determinado grupo de usuários.
Não é possível alterar atributos obrigatórios após a criação de um grupo de usuários.
O valor de username
é um atributo separado; não equivale ao atributo name
. Cada usuário tem um atributo username
. O Amazon Cognito gera automaticamente um nome de usuário para usuários federados. Você deve fornecer um atributo username
para criar um usuário nativo no diretório do Amazon Cognito. Após a criação de um usuário, não é possível alterar o valor do atributo username
.
Os desenvolvedores podem usar o atributo preferred_username
para atribuir aos usuários um nome de usuário que eles podem alterar. Para mais informações, consulte Aliases.
Se sua aplicação não exigir um nome de usuário, não será necessário solicitar que os usuários o forneçam. O aplicativo pode criar um nome de usuário exclusivo para os usuários no plano de fundo. Isso pode ser útil se você desejar que os usuários se inscrevam e façam login com um endereço de e-mail e senha. Para mais informações, consulte Aliases.
username
deve ser exclusivo em um grupo de usuários. username
pode ser reutilizado, mas somente depois que você o excluir e ele não estiver mais em uso.
Se você quiser, seus usuários podem usar aliases para inserir outros atributos quando fizerem login. Por padrão, os usuários fazem login com nome de usuário e senha. O nome de usuário é um valor fixo que os usuários não podem mudar. Se você marcar um atributo como alias, os usuários poderão fazer login usando esse atributo em vez de o nome de usuário. Você pode marcar os atributos de endereço de e-mail, número de telefone e nome de usuário preferido como aliases. Por exemplo, se você selecionar um endereço de e-mail e número de telefone como aliases para um grupo de usuários, os usuários desse grupo poderão fazer login usando o respectivo nome de usuário, endereço de e-mail ou número de telefone com a senha.
Ao configurar seu grupo de usuários para indistinção de maiúsculas e minúsculas, o usuário poderá usar letras minúsculas ou maiúsculas para se cadastrar ou fazer login com o alias. Para obter mais informações, consulte CreateUserPool na Referência da API de grupos de usuários do Amazon Cognito.
Se você selecionar o endereço de e-mail como um alias, o Amazon Cognito não aceitará um nome de usuário que corresponda a um formato de endereço de e-mail válido. Da mesma forma, se você selecionar o número de telefone como alias, o Amazon Cognito não aceitará um nome de usuário para esse grupos de usuários que corresponda a um formato de número de telefone válido.
Os valores de alias devem ser exclusivos em um grupo de usuários. Se configurar um alias para um endereço de e-mail ou número de telefone, o valor que você fornecer poderá apresentar o estado verificado em apenas uma conta. Durante o cadastro, se o usuário fornecer um endereço de e-mail ou número de telefone como um valor de alias e outro usuário já tiver usado esse valor, o registro será bem-sucedido. No entanto, quando um usuário tentar confirmar a conta com esse e-mail (ou número de telefone) e inserir o código válido, o Amazon Cognito retornará um erro AliasExistsException
. Esse erro indica ao usuário que já existe uma conta com esse endereço de e-mail (ou número de telefone). Nesse ponto, o usuário pode abandonar a tentativa de criar a nova conta e, em vez disso, tentar redefinir a senha para a conta antiga. Se o usuário continuar criando a nova conta, sua aplicação deverá chamar a API ConfirmSignUp
com a opção forceAliasCreation
. ConfirmSignUp
com forceAliasCreation
move o alias da conta anterior para a conta recém-criada e marca o atributo não verificado na conta anterior.
Os números de telefone e os endereços de e-mail só se tornarão aliases ativos para um usuário depois que você os verificar. Portanto, é recomendável escolher a verificação automática dos endereços de e-mail e números de telefone se você os usar como aliases.
Ative o atributo preferred_username
para que seu usuário possa alterar o nome de usuário que ele usa para fazer login enquanto o valor de atributo username
não mudar. Se desejar configurar essa experiência de usuário, envie o novo valor de username
como preferred_username
e escolha preferred_username
como alias. Assim, os usuários poderão fazer login com o novo valor que eles inseriram. Se você selecionar preferred_username
como alias, o usuário só poderá fornecer o valor quando confirmar uma conta. Ele não poderá fornecer o valor durante o registro.
Como usar aliases para simplificar o cadastro e o acesso do usuário
Ao criar um grupo de usuários, você pode escolher se deseja que o usuário se cadastre com um endereço de e-mail ou número de telefone como nome de usuário.
Após a criação de um grupo de usuários, não é possível alterar essa configuração.
Quando o usuário se cadastra com um nome de usuário, é possível escolher se ele pode fazer login com um ou mais dos seguintes aliases:
-
Um endereço de e-mail verificado
-
Um número de telefone verificado
-
Nome de usuário preferido
Depois que o usuário se cadastra, ele não pode alterar esses aliases.
Inclua as etapas a seguir quando criar o grupo de usuários para que os usuários possam fazer login com um alias.
Quando o usuário se cadastra com um endereço de e-mail ou número de telefone como o respectivo nome de usuário, é possível escolher se ele pode se cadastrar apenas com endereços de e-mail, apenas números de telefone ou qualquer um dos dois.
O endereço de e-mail ou o número de telefone deve ser exclusivo e não deve estar em uso por outro usuário. Ele não precisa ser verificado. Depois que o usuário se cadastra com um endereço de e-mail ou número de telefone, ele não pode criar uma nova conta com o mesmo endereço de e-mail ou número de telefone. O usuário só poderá reutilizar a conta existente e redefinir a respectiva senha, se necessário. No entanto, ele pode alterar o endereço de e-mail ou o número de telefone para um novo endereço de e-mail ou número de telefone. Se o endereço de e-mail ou o número de telefone ainda não estiver em uso, ele se tornará o novo nome de usuário.
Se um usuário se cadastrar com um endereço de e-mail como nome de usuário, ele poderá alterar o nome de usuário para outro endereço de e-mail, mas não poderá alterá-lo para um número de telefone. Se os usuários se cadastrarem com um número de telefone, eles poderão alterar o nome de usuário para outro número de telefone, mas não poderão alterá-lo para um endereço de e-mail.
Siga as etapas abaixo durante o processo de criação do grupo de usuários para configurar o cadastro e o login com um endereço de e-mail ou número de telefone.
Não é necessário marcar o endereço de e-mail ou número de telefone como atributos obrigatórios para o grupo de usuários.
Para implementar a opção 2 no aplicativo
-
Chame a API
CreateUserPool
para criar o grupo de usuários. Defina o parâmetroUserNameAttributes
comophone_number
,email
ouphone_number | email
. -
Chame a API
SignUp
e envie um endereço de e-mail ou número de telefone para o parâmetrousername
da API. Esta API faz o seguinte:-
Se a string
username
estiver no formato válido de endereço de e-mail, o grupo de usuários preencherá automaticamente o atributoemail
do usuário com o valorusername
. -
Se a string
username
estiver no formato válido de número de telefone, o grupo de usuários ocupa automaticamente o atributophone_number
do usuário com o valorusername
. -
Se a string
username
não estiver no formato de endereço de e-mail ou número de telefone, a APISignUp
retornará uma exceção. -
A API
SignUp
gera um UUID persistente para o usuário e o utiliza internamente como o atributo imutável nome de usuário. Este UUID possui o mesmo valor reivindicado pelosub
no token de identidade do usuário. -
Se a string
username
contiver um endereço de e-mail ou número de telefone já em uso, a APISignUp
retornará uma exceção.
-
Em vez de o nome de usuário, é possível usar um endereço de e-mail ou número de telefone como alias em todas as APIs, exceto a API ListUsers
. Quando você chama ListUsers
, é possível pesquisar pelo atributo email
ou phone_number
. Se você pesquisar por username
, será necessário fornecer o nome de usuário real, não o alias.
Você pode adicionar até 50 atributos personalizados ao grupo de usuários. Você pode especificar um comprimento mínimo e/ou máximo para os atributos personalizados. No entanto, o comprimento máximo para qualquer atributo personalizado não pode ultrapassar 2.048 caracteres.
Todo atributo personalizado tem as seguintes características:
-
Você pode defini-lo como uma string ou um número. O Amazon Cognito grava valores de atributo personalizados no token de ID somente como strings.
-
Não é possível exigir que os usuários forneçam um valor para o atributo.
-
Você não poderá removê-lo ou alterá-lo depois de adicioná-lo ao grupo de usuários.
-
A extensão de caracteres do nome do atributo está dentro do limite que o Amazon Cognito aceita. Para mais informações, consulte Cotas no Amazon Cognito.
-
Ele pode ser mutável ou imutável. É possível gravar um valor em um atributo imutável ao criar um usuário. Você pode alterar o valor de um atributo mutável se o cliente de aplicação tiver permissão de gravação para o atributo. Consulte Permissões e escopos do atributo para obter mais informações.
No código e nas configurações de regra de Controle de acesso com base em função, os atributos personalizados requerem o prefixo custom:
para que sejam diferenciados dos atributos padrão.
Siga o procedimento abaixo para criar um novo atributo personalizado.
Para cada aplicação cliente, é possível configurar permissões de leitura e gravação para cada atributo de usuário. Dessa forma, você pode controlar o acesso de leitura que qualquer aplicação tiver e modificar cada atributo armazenado para seus usuários. Por exemplo, você pode ter um atributo personalizado que indique se um usuário é ou não um cliente pagante. Suas aplicações podem ver esse atributo, mas não o alterar diretamente. Em vez disso, você atualizará o atributo usando uma ferramenta administrativa ou um processo em segundo plano. Você pode definir permissões para atributos de usuário no console do Amazon Cognito, na API do Amazon Cognito ou na AWS CLI. Por padrão, todos os novos atributos personalizados só estarão disponíveis depois que você definir permissões de leitura e gravação para eles. Ao criar um cliente de aplicação no console do Amazon Cognito, você concede à aplicação permissões de leitura e gravação para todos os atributos padrão e personalizados por padrão. Para limitar a aplicação apenas à quantidade de informações necessárias, escolha um subconjunto de escopos que a aplicação precisa.
Repita essas etapas para cada cliente de aplicativo usando o atributo personalizado.
Para cada aplicação, os atributos podem ser marcados como legíveis ou graváveis. Isso se aplica aos atributos padrão e aos atributos personalizados. Uma aplicação pode ler um atributo marcado como legível e gravar um atributo marcado como gravável. Se uma aplicação tentar atualizar um atributo não gravável, ela receberá uma exceção NotAuthorizedException
. A aplicação que chamar GetUser receberá apenas os atributos que ela pode ler. O token de ID do usuário de uma aplicação contém apenas declarações que correspondem aos atributos legíveis. Os atributos obrigatórios em um grupo de usuários sempre são graváveis. Se usar a AWS CLI ou a API do administrador para definir um atributo gravável e não fornecer atributos obrigatórios, você receberá uma exceção InvalidParameterException
.
Você pode alterar os escopos e as permissões de atributo após ter criado o grupo de usuários.