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á.
Gerenciar respostas de erro de existência do usuário
O Amazon Cognito permite personalizar respostas de erro retornadas por grupos de usuários. As respostas de erro personalizadas estão disponíveis para operações de criação e autenticação de usuários, recuperação de senha e confirmação.
Use o PreventUserExistenceErrors
de um cliente da aplicação de grupo de usuários para habilitar ou desabilitar erros relacionados à existência do usuário. Ao criar um cliente de aplicação utilizando a API de grupo de usuários do Amazon Cognito LEGACY
será PreventUserExistenceErrors
ou então desativada, por padrão. No console do Amazon Cognito, a opção Habilitar a prevenção de erros de existência do usuário — uma configuração de ENABLED
para PreventUserExistenceErrors
— é selecionada por padrão. Para atualizar a configuração PreventUserExistenceErrors
, siga um destes procedimentos:
-
Alterar o valor de
PreventUserExistenceErrors
entreENABLED
eLEGACY
em um UpdateUserPoolClientSolicitação de API. -
Edite seu cliente de aplicação no console do Amazon Cognito e altere o estado de Habilitar a prevenção de erros de existência do usuário entre selecionado (
ENABLED
) e desmarcado (LEGACY
).
Quando essa propriedade tem um valor LEGACY
, o cliente da aplicação retorna uma resposta de erro UserNotFoundException
quando um usuário tenta fazer login com um nome de usuário que não existe no seu grupo de usuários.
Quando essa propriedade tem um valor ENABLED
, o cliente da aplicação não divulga a inexistência de uma conta de usuário em seu grupo de usuários e exibe o erro UserNotFoundException
. Uma configuração PreventUserExistenceErrors
de ENABLED
tem os seguintes efeitos:
-
O Amazon Cognito responde com informações não específicas às solicitações de API, em que sua resposta poderia revelar a existência de um usuário válido.
-
O login e a senha esquecida do Amazon Cognito retornam uma resposta genérica de falha de autenticação APIs . A resposta de erro informa que o nome de usuário ou a senha está incorreta.
-
A confirmação da conta e a recuperação de senha do Amazon Cognito APIs retornam uma resposta indicando que um código foi enviado para um meio de entrega simulado, em vez de uma representação parcial das informações de contato do usuário.
As informações a seguir detalham os comportamentos das operações do grupo de usuários quando PreventUserExistenceErrors
está definido como ENABLED
.
Operações de criação e autenticação de usuários
Você pode configurar respostas de erro na autenticação de Nome de usuário-Senha e Senha remota segura (SRP). Também é possível personalizar os erros retornados com a autenticação personalizada. O seguinte APIs executa essas operações de autenticação:
-
AdminInitiateAuth
-
AdminRespondToAuthChallenge
-
InitiateAuth
-
RespondToAuthChallenge
A lista a seguir demonstra como você pode personalizar as respostas de erro nas operações de autenticação do usuário.
- Autenticação com nome de usuário e senha
-
Para fazer login de um usuário com
ADMIN_USER_PASSWORD_AUTH
eUSER_PASSWORD_AUTH
, inclua o nome de usuário e a senha em uma solicitação de APIAdminInitiateAuth
ouInitiateAuth
. O Amazon Cognito retorna um erro genéricoNotAuthorizedException
quando o nome de usuário ou a senha está incorreta. - Autenticação baseada em senha remota segura (SRP)
-
Como prática recomendada, implemente somente
PreventUserExistenceErrors
com a autenticação SRP em grupos de usuários sem endereço de e-mail, número de telefone ou atributos preferenciais de alias de nome de usuário. Usuários com atributos de alias podem não estar sujeitos à supressão da existência do usuário no fluxo de autenticação SRP. A autenticação por nome de usuário e senha suprime totalmente a existência de usuários a partir de atributos de alias.Para fazer login de um usuário com
USER_SRP_AUTH
, inclua o nome de usuário e um parâmetroSRP_A
em uma solicitação de APIAdminInitiateAuth
ouInitiateAuth
. Em resposta, o Amazon Cognito retornaSRP_B
e usa salt para o usuário. Quando um usuário não é localizado, o Amazon Cognito retorna uma resposta simulada na primeira etapa conforme descrito em RFC 5054. O Amazon Cognito retorna o mesmo salt e um ID de usuário interno no formato de UUID para a mesma combinação de nome de usuário e grupo de usuários. Quando você envia uma solicitação de API RespondToAuthChallenge
com prova de senha, o Amazon Cognito retorna um erro genéricoNotAuthorizedException
quando o nome de usuário ou a senha está incorreta.nota
Você pode simular uma resposta genérica com a autenticação de nome de usuário e senha se estiver usando atributos de alias baseados em verificação e se o nome de usuário imutável não estiver formatado como um UUID.
- Acionador do Lambda do desafio de autenticação personalizada
-
Se você usar o Acionador do Lambda do desafio de autenticação personalizada e habilitar respostas de erro, o
LambdaChallenge
retornará um parâmetro booliano chamadoUserNotFound
. Em seguida, ele é passado na solicitação de acionadores do LambdaDefineAuthChallenge
,VerifyAuthChallenge
eCreateAuthChallenge
. Você pode usar esse acionador para simular desafios de autenticação personalizados para usuários não existentes. Se você chamar o acionador do Lambda de pré-autenticação para um usuário que não existe, o Amazon Cognito retornaráUserNotFound
.
A lista a seguir demonstra como você pode personalizar as respostas de erro nas operações de criação de usuários.
- SignUp
-
A operação
SignUp
sempre retornaUsernameExistsException
quando um nome de usuário já está sendo usado. Se você não quiser que o Amazon Cognito retorne um erroUsernameExistsException
para endereços de e-mail e números de telefone ao inscrever usuários na aplicação, use atributos de alias baseados em verificação. Para obter mais informações sobre aliases, consulte Personalização dos atributos de login.Para ver um exemplo de como o Amazon Cognito pode impedir o uso de solicitações da API
SignUp
para descobrir usuários no grupo de usuários, consulte Evitar erros UsernameExistsException de endereços de e-mail e números de telefone na inscrição. - Usuários importados
-
Se
PreventUserExistenceErrors
estiver habilitado durante a autenticação de usuários importados, será retornado um erro genéricoNotAuthorizedException
, que indica que o nome de usuário ou a senha estava incorreta, em vez dePasswordResetRequiredException
. Consulte Solicitar que os usuários importados redefinam suas senhas para obter mais informações. - Migrar o acionador do Lambda do usuário
-
O Amazon Cognito retornará uma resposta simulada para usuários não existentes quando uma resposta vazia tiver sido definida no contexto do evento original pelo acionador do Lambda. Para obter mais informações, consulte Migrar o acionador do Lambda do usuário.
Evitar erros UsernameExistsException
de endereços de e-mail e números de telefone na inscrição
O exemplo a seguir demonstra como, ao configurar atributos de alias no grupo de usuários, você pode impedir que endereços de e-mail e números de telefone duplicados gerem erros UsernameExistsException
em resposta às solicitações da API SignUp
. Você deve ter criado o grupo de usuários com o endereço de e-mail ou o número de telefone como atributos de alias. Para obter mais informações, consulte a seção Personalizar atributos de login de Atributos de grupos de usuários.
-
Jie se inscreve com um novo nome de usuário e também fornece o endereço de e-mail
jie@example.com
. O Amazon Cognito envia um código para o endereço de e-mail dele.Exemplo de AWS CLI comando
aws cognito-idp sign-up --client-id 1234567890abcdef0 --username jie --password PASSWORD --user-attributes Name="email",Value="jie@example.com"
Exemplo de resposta
{ "UserConfirmed": false, "UserSub": "
<subId>
", "CodeDeliveryDetails": { "AttributeName": "email", "Destination": "j****@e****", "DeliveryMedium": "EMAIL" } } -
Jie fornece o código enviado a ele para confirmar a propriedade do endereço de e-mail. Isso conclui seu registro como usuário.
Exemplo de AWS CLI comando
aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=jie --confirmation-code xxxxxx
-
Shirley registra uma nova conta de usuário e fornece o endereço de e-mail
jie@example.com
. O Amazon Cognito não retorna um erroUsernameExistsException
e envia um código de confirmação para o endereço de e-mail de Jie.Exemplo de AWS CLI comando
aws cognito-idp sign-up --client-id 1234567890abcdef0 --username shirley --password PASSWORD --user-attributes Name="email",Value="jie@example.com"
Exemplo de resposta
{ "UserConfirmed": false, "UserSub": "
<new subId>
", "CodeDeliveryDetails": { "AttributeName": "email", "Destination": "j****@e****", "DeliveryMedium": "EMAIL" } } -
Em um cenário diferente, Shirley é proprietária de
jie@example.com
. Shirley recupera o código que o Amazon Cognito enviou para o endereço de e-mail de Jie e tenta confirmar a conta.Exemplo de AWS CLI comando
aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=shirley --confirmation-code xxxxxx
Exemplo de resposta
An error occurred (AliasExistsException) when calling the ConfirmSignUp operation: An account with the email already exists.
O Amazon Cognito não retorna um erro à solicitação aws cognito-idp sign-up
de Shirley, apesar de jie@example.com
ter sido atribuído a um usuário existente. Shirley deve demonstrar a propriedade do endereço de e-mail antes que o Amazon Cognito retorne uma resposta de erro. Em um grupo de usuários com atributos de alias, esse comportamento impede o uso da API SignUp
pública para verificar se existe um usuário com um determinado endereço de e-mail ou número de telefone.
Esse comportamento é diferente da resposta que o Amazon Cognito retorna à solicitação SignUp
com um nome de usuário existente, conforme mostrado no exemplo a seguir. Embora Shirley saiba, com base nessa resposta, que já existe um usuário com o nome jie
, não é possível saber sobre nenhum endereço de e-mail ou número de telefone associado ao usuário.
Exemplo de comando da CLI
aws cognito-idp sign-up --client-id 1example23456789 --username jie --password PASSWORD --user-attributes Name="email",Value="shirley@example.com"
Exemplo de resposta
An error occurred (UsernameExistsException) when calling the SignUp operation: User already exists
Operações de redefinição de senha
O Amazon Cognito retorna as respostas a seguir às operações de redefinição de senha do usuário quando você evita erros de existência do usuário.
- ForgotPassword
-
Quando um usuário não é encontrado, está desativado ou não tem um mecanismo de entrega verificado para recuperar a senha, o Amazon Cognito retorna
CodeDeliveryDetails
com um meio de entrega simulado para um usuário. O meio de entrega simulado é determinado pelo formato de entrada do nome de usuário e as configurações de verificação do grupo de usuários. - ConfirmForgotPassword
-
O Amazon Cognito retorna o erro
CodeMismatchException
para usuários que não existem ou estão desabilitados. Se um código não for solicitado ao ser usado oForgotPassword
, o Amazon Cognito retornará o erroExpiredCodeException
.
Operações de confirmação
O Amazon Cognito retorna as respostas a seguir às operações de confirmação e verificação do usuário quando você evita erros de existência do usuário.
- ResendConfirmationCode
-
O Amazon Cognito retorna
CodeDeliveryDetails
para um usuário desabilitado ou um usuário que não existe. O Amazon Cognito envia um código de confirmação para o e-mail ou telefone do usuário existente. - ConfirmSignUp
-
Retorna
ExpiredCodeException
se um código tiver expirado. O Amazon Cognito retornaNotAuthorizedException
quando um usuário não está autorizado. Se o código não corresponder ao que o servidor espera que o Amazon Cognito retorneCodeMismatchException
.