Atributos de grupo de usuários - Amazon Cognito

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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 à sua definição de 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.

nota

Alguns documentos e padrões se referem a atributos como membros.

Atributos padrão

O Amazon Cognito atribui a todos os usuários um conjunto de atributos padrão com base na Especificação do OpenID Connect. Por padrão, os valores de atributo padrão e personalizados podem ser qualquer string de até 2.048 caracteres, mas alguns valores têm restrições de formato.

Os atributos padrão são:

  • address

  • birthdate

  • email

  • family_name

  • gender

  • given_name

  • locale

  • middle_name

  • name

  • nickname

  • phone_number

  • picture

  • preferred_username

  • profile

  • sub

  • updated_at

  • website

  • zoneinfo

Exceto sub, os atributos padrão são opcionais por padrão 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. O Amazon Cognito atribui um valor de identificador de usuário exclusivo ao atributo sub de cada usuário. Somente os atributos email e phone_number podem ser verificados.

nota

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 para os atributos necessários, os administradores podem usar a AdminCreateUserAPI. 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.

Detalhes do atributo padrão e restrições de formato
birthdate

O valor deve ser uma data de dez caracteres válida no formato AAAA-MM-DD.

email

Os usuários e administradores podem verificar valores de endereço de e-mail.

Um administrador com Conta da AWS as permissões adequadas pode alterar o endereço de e-mail do usuário e também marcá-lo como verificado. Marque um endereço de e-mail como verificado com a AdminUpdateUserAttributesAPI ou o comando admin-update-user-attributes AWS Command Line Interface (AWS CLI). Com esse comando, o administrador pode alterar o atributo email_verified para true. Você também pode editar um usuário na guia Usuários do AWS Management Console para marcar um endereço de e-mail como verificado.

O valor deve ser uma string de endereço de e-mail válida seguindo o formato de e-mail padrão com o símbolo @ e o domínio, com até 2.048 caracteres.

phone_number

O usuário deverá fornecer um número de telefone se a autenticação multifator (MFA) de SMS estiver ativa. Para ter 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 Conta da AWS as permissões adequadas pode alterar o número de telefone do usuário e também marcá-lo como verificado. Marque um número de telefone como verificado com a AdminUpdateUserAttributesAPI ou o admin-update-user-attributes AWS CLI comando. Com esse comando, o administrador pode alterar o atributo phone_number_verified para true. Você também pode editar um usuário na guia 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. Se preferred_username for um alias, você pode fazer uma solicitação para a operação da UpdateUserAttributesAPI e adicionar o valor do atributo depois de confirmar o usuário.

sub

Indexe e pesquise seus usuários com base no atributo sub. O atributo sub é um identificador de usuário exclusivo em cada grupo de usuários. Os usuários podem alterar atributos como username e email. O atributo sub tem um valor fixo. Para ter mais informações sobre como descobrir usuários, consulte Como gerenciar e pesquisar contas de usuários.

Exibir atributos obrigatórios

Siga o procedimento abaixo a fim de exibir atributos obrigatórios para um determinado grupo de usuários.

nota

Não é possível alterar atributos obrigatórios após a criação de um grupo de usuários.

Para exibir atributos obrigatórios
  1. Acesse o Amazon Cognito no. AWS Management Console Se o console solicitar, insira suas AWS credenciais.

  2. Escolha User Pools (Grupos de usuários).

  3. Escolha um grupo de usuários existente da lista.

  4. Escolha a guia Sign-up experience (Experiência de cadastro).

  5. Na seção Required attributes (Atributos obrigatórios), veja os atributos obrigatórios de seu grupo de usuários.

Nome de usuário e nome de usuário preferencial

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 local 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 nomes de usuário que eles podem alterar. Para ter mais informações, consulte Personalização dos atributos de login.

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 ter mais informações, consulte Personalização dos atributos de login.

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. Para obter informações sobre as restrições de string aos username atributos, consulte a propriedade username de uma solicitação de SignUpAPI.

Personalização dos atributos de login

Ao criar um grupo de usuários, você pode configurar atributos de nome de usuário caso queira que os usuários possam se inscrever e fazer login com um endereço de e-mail ou um número de telefone como nome de usuário. Como alternativa, você pode configurar atributos de alias para dar aos usuários a seguinte opção: incluir vários atributos ao se inscreverem e, então, fazer login com um nome de usuário, nome de usuário preferencial, endereço de e-mail ou número de telefone.

Importante

Após a criação de um grupo de usuários, não é possível alterar essa configuração.

Como escolher entre atributos de alias e atributos de nome de usuário

Seu requisito Atributos de alias Atributos do nome de usuário
Users have multiple sign-in attributes Yes¹ No²
Users must verify email address or phone number before they can sign in with it Yes No
Sign up users with duplicate email addresses or phone numbers and prevent UsernameExistsException errors³ Yes No
Can assign the same email address or phone number attribute value to more than one user Yes⁴ No

¹ Os atributos de login disponíveis são nome de usuário, endereço de e-mail, número de telefone e nome de usuário de preferência.

² É possível fazer login com o endereço de e-mail ou o número de telefone.

³ O grupo de usuários não gera erros UsernameExistsException quando os usuários se registram com endereços de e-mail ou números de telefone possivelmente duplicados, mas sem nome de usuário. Esse comportamento é independente de Evitar erros de existência de nome de usuário, que se aplica às operações de login, mas não às operações de inscrição.

⁴ Somente o último usuário que verificou o atributo pode fazer login com ele.

Você pode ativar aliases se quiser permitir que os usuários optem por inserir o nome de usuário ou outros valores de atributo ao fazerem 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.

Para escolher atributos de alias, selecione User name (Nome de usuário) e pelo menos uma opção de login adicional ao criar o grupo de usuários.

nota

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 a Referência CreateUserPoolda 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 grupo de usuários que corresponda a um formato de número de telefone válido.

nota

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. Recomendamos escolher a verificação automática dos endereços de e-mail e números de telefone se você os usar como aliases.

Escolha atributos de alias para evitar erros UsernameExistsException nos atributos de endereço de e-mail e número de telefone quando os usuários se inscreverem.

Ative o atributo preferred_username para que o usuário possa alterar o nome 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.

Quando o usuário se inscreve com um nome de usuário, é possível escolher se ele pode fazer login com um ou mais dos aliases a seguir.

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

Importante

Quando seu grupo de usuários é compatível com login com aliases e você deseja autorizar ou pesquisar um usuário, não identifique seu usuário por nenhum de seus atributos de login. O identificador de usuário de valor fixo sub é o único indicador consistente da identidade do seu usuário.

Inclua as etapas a seguir quando criar o grupo de usuários para que os usuários possam fazer login com um alias.

Como configurar um grupo de usuários para que seja possível fazer login com um nome de usuário preferido
  1. Acesse o Amazon Cognito no AWS Management Console. Se o console solicitar, insira suas AWS credenciais.

  2. Escolha User Pools (Grupos de usuários).

  3. No canto superior direito da página, escolha Create a user pool (Criar um grupo de usuários) para iniciar o assistente de criação de grupo de usuários.

  4. Em Configure sign-in experience (Configurar experiência de acesso), escolha a identidade Provider types (Tipos de provedores) que você deseja associar ao grupo de usuários.

  5. Em Cognito user pool sign-in options (Opções de acesso do grupo de usuários do Cognito), escolha qualquer combinação de User name (Nome de usuário), Email (E-mail) e Phone number (Número de telefone).

  6. Em Requisitos de nome do usuário, selecione Permitir que os usuários façam login com um nome de usuário preferido para permitir a definição de um nome de usuário alternativo para login.

  7. Selecione Next (Próximo) e, em seguida, conclua todas as etapas no assistente.

Quando o usuário se inscreve 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 inscrever apenas com endereços de e-mail, apenas números de telefone ou qualquer um dos dois.

Para escolher atributos de nome de usuário, não selecione Nome de usuário como opção de login ao criar o grupo de usuários.

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.

nota

Se um usuário se inscrever 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 inscreverem 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.

Para configurar um grupo de usuários para cadastro e login com um endereço de e-mail ou número de telefone
  1. Acesse o Amazon Cognito no AWS Management Console. Se o console solicitar, insira suas AWS credenciais.

  2. Escolha User Pools (Grupos de usuários).

  3. No canto superior direito da página, escolha Create a user pool (Criar um grupo de usuários) para iniciar o assistente de criação de grupo de usuários.

  4. Em Cognito user pool sign-in options (Opções de login do grupo de usuários do Cognito), escolha qualquer combinação de Email (E-mail) e Phone number (Número de telefone) que represente os atributos de alias que o usuário pode usar para fazer login.

  5. Selecione Next (Próximo) e conclua todas as etapas restantes no assistente.

nota

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
  1. Chame a API CreateUserPool para criar o grupo de usuários. Defina o parâmetro UserNameAttributes como phone_number, email ou phone_number | email.

  2. Chame a API SignUp e envie um endereço de e-mail ou número de telefone para o parâmetro username 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 atributo email do usuário com o valor username.

    • Se a string username estiver no formato válido de número de telefone, o grupo de usuários ocupa automaticamente o atributo phone_number do usuário com o valor username.

    • Se a string username não estiver no formato de endereço de e-mail ou número de telefone, a API SignUp retornará uma exceção.

    • A API SignUp gera um UUID persistente para o usuário e o utiliza internamente como o atributo nome de usuário imutável. Este UUID possui o mesmo valor reivindicado pelo sub 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 API SignUp retornará uma exceção.

É possível usar um endereço de e-mail ou número de telefone como um alias em vez do nome de usuário em todas as APIs, exceto na 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.

Atributos personalizados

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

nota

No código e nas configurações de regra de Controle de acesso com base em perfil, os atributos personalizados requerem o prefixo custom: para que sejam diferenciados dos atributos padrão.

Você também pode adicionar atributos de desenvolvedor ao criar grupos de usuários, na SchemaAttributes propriedade de CreateUserPool. Os atributos de desenvolvedor têm um prefixo dev:. Você só pode modificar os atributos de desenvolvedor de um usuário com AWS credenciais. Os atributos de desenvolvedor são um recurso herdado que o Amazon Cognito substituiu pelas permissões de leitura e gravação do cliente da aplicação.

Siga o procedimento abaixo para criar um novo atributo personalizado.

Para adicionar um atributo personalizado usando o console
  1. Acesse o Amazon Cognito no. AWS Management Console Se o console solicitar, insira suas AWS credenciais.

  2. Escolha User Pools (Grupos de usuários).

  3. Escolha um grupo de usuários existente da lista.

  4. Selecione a guia Sign-up experience (Experiência de cadastro) e na seção Custom attributes (Atributos personalizados), escolha Add custom attributes (Adicionar atributos personalizados).

  5. Na página Add custom attributes (Adicionar atributos personalizados), forneça os seguintes detalhes sobre o novo atributo:

    • Insira um Name (Nome).

    • Selecione um Type (Tipo), que pode ser String ou Number (Número).

    • Insira um tamanho de string Min. (Mínimo) ou um valor numérico.

    • Insira um tamanho de string Max. (Máximo) ou um valor numérico.

    • Selecione Mutable (Mutável) se quiser conceder permissão aos usuários para alterar o valor de um atributo personalizado depois que eles definirem o valor inicial.

  6. Escolha Salvar alterações.

Permissões e escopos do atributo

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 somente à quantidade de informações necessárias, atribua permissões específicas aos atributos na configuração do cliente da aplicação.

nota

DescribeUserPoolClientretorna somente valores para ReadAttributes e WriteAttributes quando você configura permissões do cliente do aplicativo que não sejam as padrão.

Como atualizar as permissões de atributo (AWS Management Console)
  1. Acesse o Amazon Cognito no. AWS Management Console Se o console solicitar, insira suas AWS credenciais.

  2. Escolha User Pools (Grupos de usuários).

  3. Escolha um grupo de usuários existente da lista.

  4. Selecione a guia App integration (Integração de aplicação) e na seção App clients (Clientes da aplicação), escolha um cliente da aplicação na lista.

  5. Na seção Attribute read and write permissions (Permissões de gravação e leitura de atributos), escolha Edit (Editar).

  6. Na página Edit attribute read and write permissions (Editar permissões de leitura e gravação de atributos), configure suas permissões de leitura e gravação e, em seguida, escolha Save changes (Salvar alterações).

Repita essas etapas para cada cliente de aplicativo usando o atributo personalizado.

Para cada aplicação, é possível marcar atributos como legíveis ou graváveis. Isso se aplica aos atributos padrão e aos atributos personalizados. A aplicação pode recuperar o valor dos atributos que você marca como legíveis, bem como definir ou modificar o valor dos atributos marcados como graváveis. Se a aplicação tentar definir um valor para um atributo que não esteja autorizado a gravar, o Amazon Cognito retornará NotAuthorizedException. GetUseras solicitações incluem um token de acesso com uma reivindicação do cliente do aplicativo; o Amazon Cognito retorna somente valores para atributos que o cliente do aplicativo pode ler. O token de ID do usuário de uma aplicação contém apenas declarações que correspondem aos atributos legíveis. Todos os clientes da aplicação podem gravar os atributos necessários do grupo de usuários. Você só pode definir o valor de um atributo em uma solicitação de API de grupos de usuários do Amazon Cognito quando também fornece um valor para quaisquer atributos obrigatórios que ainda não tenham um valor.

Os atributos personalizados têm recursos distintos para permissões de leitura e gravação. É possível criá-los como mutáveis ou imutáveis para o grupo de usuários e defini-los como atributos de leitura ou gravação para qualquer cliente da aplicação.

Um atributo personalizado imutável pode ser atualizado uma vez durante a criação do usuário. É possível preencher um atributo imutável com os métodos a seguir.

  • SignUp: um usuário se inscreve em um cliente da aplicação que tenha acesso de gravação a um atributo personalizado imutável. Ele fornece um valor para esse atributo.

  • Fazer login com um IdP de terceiros: um usuário faz login em um cliente da aplicação que tem acesso de gravação a um atributo personalizado imutável. A configuração do grupo de usuários para o IdP tem uma regra para associar uma declaração fornecida a um atributo imutável.

  • AdminCreateUser: você fornece um valor para um atributo imutável.

Para receber informações sobre os escopos que você pode atribuir aos clientes da aplicação, consulte Escopos do OAuth 2.0 e autorização de API com servidores de recursos.

Você pode alterar os escopos e as permissões de atributo após ter criado o grupo de usuários.