

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

# Trabalhar com dispositivos de usuários no grupo de usuários
<a name="amazon-cognito-user-pools-device-tracking"></a>

Ao fazer login de usuários de grupos de usuários locais com a API de grupos de usuários do Amazon Cognito, é possível associar os logs de atividades dos usuários, provenientes da [proteção contra ameaças](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-settings-threat-protection.html), a cada um dos dispositivos e, opcionalmente, permitir que os usuários ignorem a autenticação multifator (MFA) se estiverem em um dispositivo confiável. O Amazon Cognito inclui uma chave de dispositivo na resposta a qualquer login que ainda não inclua informações do dispositivo. A chave do dispositivo está no formato `Region_UUID`. Com uma chave de dispositivo, uma biblioteca de senha remota segura (SRP) e um grupo de usuários que permita a autenticação do dispositivo, é possível solicitar que os usuários da aplicação confiem no dispositivo atual e não solicitem mais um código de MFA no login.

**Topics**
+ [Como configurar dispositivos memorizados](#amazon-cognito-user-pools-setting-up-remembered-devices)
+ [Obter uma chave do dispositivo](#user-pools-remembered-devices-getting-a-device-key)
+ [Fazer login com um dispositivo](#user-pools-remembered-devices-signing-in-with-a-device)
+ [Visualizar, atualizar e esquecer dispositivos](#user-pools-remembered-devices-viewing-updating-forgetting)

## Como configurar dispositivos memorizados
<a name="amazon-cognito-user-pools-setting-up-remembered-devices"></a>

Com os grupos de usuários do Amazon Cognito, é possível associar cada um dos dispositivos dos usuários a um identificador de dispositivo exclusivo: uma chave de dispositivo. Ao apresentar a chave do dispositivo e realizar a autenticação do dispositivo no login, é possível configurar a aplicação com um fluxo de autenticação de *dispositivo confiável*. Nesse fluxo, a aplicação pode apresentar aos usuários a opção de fazer login sem MFA em outro momento, conforme os requisitos de segurança da aplicação ou as preferências dos usuários. Ao final desse período, a aplicação deve alterar o status do dispositivo para *não memorizado* e o usuário deve fazer login com MFA até confirmar que deseja memorizar um dispositivo. Por exemplo, a aplicação pode solicitar que seus usuários confiem em um dispositivo por 30, 60 ou 90 dias. Você pode armazenar essa data em um atributo personalizado e, nessa data, alterar o status de memorização do dispositivo. Em seguida, é necessário solicitar novamente ao usuário que envie um código de MFA e configure o dispositivo para que seja novamente memorizado após a autenticação bem-sucedida.

1. Os dispositivos memorizados podem substituir a MFA somente em grupos de usuários com a MFA ativa.

Quando o usuário faz login com um dispositivo memorizado, é necessário realizar uma autenticação adicional do dispositivo durante o fluxo de autenticação. Para obter mais informações, consulte [Fazer login com um dispositivo](#user-pools-remembered-devices-signing-in-with-a-device).

Configure o grupo de usuários para memorizar os dispositivos no menu **Fazer login** do grupo de usuários, em **Monitoramento de dispositivos**. Ao configurar a funcionalidade de dispositivos memorizados por meio do console do Amazon Cognito, você terá três opções: **Always** (Sempre), **User Opt-In** (Usuário opta por) e **No** (Não).

**Não memorizar**  
O grupo de usuários não solicita que os usuários se lembrem dos dispositivos ao fazerem login.

**Sempre memorizar**  
Quando a aplicação confirma o dispositivo de um usuário, o grupo de usuários sempre se lembra do dispositivo e não retorna desafios de MFA em futuros logins bem-sucedidos do dispositivo.

**Opção do usuário**  
Quando a aplicação confirma o dispositivo de um usuário, o grupo de usuários não suprime automaticamente os desafios de MFA. É necessário solicitar que o usuário escolha se deseja memorizar o dispositivo.

Ao selecionar **Sempre memorizar** ou **Opção do usuário**, o Amazon Cognito gera uma chave e um segredo de identificação do dispositivo toda vez que um usuário faz login em um dispositivo não identificado. A chave do dispositivo é o identificador inicial que a aplicação envia ao grupo de usuários quando o usuário realiza a autenticação do dispositivo.

Com cada dispositivo de usuário confirmado, seja lembrado automaticamente ou por opção, é possível usar a chave e o segredo do identificador do dispositivo para autenticar um dispositivo em cada login de usuário. 

Você também pode definir as configurações de dispositivos memorizados para seu grupo de usuários em uma solicitação de [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)ou API. Para obter mais informações, consulte a [DeviceConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#CognitoUserPools-UpdateUserPool-request-DeviceConfiguration)propriedade.

A API de grupos de usuários do Amazon Cognito tem operações adicionais para dispositivos memorizados.

1. [ListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListDevices.html)e [AdminListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListDevices.html)retorne uma lista das chaves do dispositivo e seus metadados para um usuário.

1. [GetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetDevice.html)e [AdminGetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetDevice.html)retorne a chave do dispositivo e os metadados de um único dispositivo.

1. [UpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateDeviceStatus.html)e [AdminUpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateDeviceStatus.html)defina o dispositivo do usuário como lembrado ou não lembrado.

1. [ForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgetDevice.html)e [AdminForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminForgetDevice.html)remova o dispositivo confirmado de um usuário do perfil dele.

As operações de API com nomes que começam com `Admin` são para uso em aplicações do lado do servidor e devem ser autorizadas com credenciais do IAM. Para obter mais informações, consulte [Noções básicas sobre a autenticação de API, OIDC e páginas de login gerenciado](authentication-flows-public-server-side.md#user-pools-API-operations).

## Obter uma chave do dispositivo
<a name="user-pools-remembered-devices-getting-a-device-key"></a>

Sempre que o usuário faz login com a API de grupos de usuários e não inclui uma chave do dispositivo nos parâmetros de autenticação como `DEVICE_KEY`, o Amazon Cognito gera uma nova chave do dispositivo na resposta. Na aplicação pública do lado do cliente, coloque a chave do dispositivo no armazenamento da aplicação para que você possa incluí-la em futuras solicitações. Na aplicação confidencial do lado do servidor, defina um cookie do navegador ou outro token do lado do cliente com a chave do dispositivo do usuário.

Para que o usuário possa fazer login com o dispositivo confiável, a aplicação deve confirmar a chave do dispositivo e fornecer informações adicionais. Gere uma [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html)solicitação para o Amazon Cognito que confirme o dispositivo do seu usuário com a chave do dispositivo, um nome amigável, um verificador de senha e um sal. Se você configurou o grupo de usuários para autenticação opcional de dispositivos, o Amazon Cognito responderá à solicitação `ConfirmDevice` pedindo que o usuário escolha se deseja memorizar o dispositivo atual. Responda com a seleção do seu usuário em uma [UpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateDeviceStatus.html)solicitação. 

Ao confirmar o dispositivo do usuário, mas não o configurar como memorizado, o Amazon Cognito armazena a associação, mas prossegue com o login que não é do dispositivo quando você fornece a respectiva chave. Os dispositivos podem gerar logs úteis para a segurança e solução de problemas do usuário. Um dispositivo confirmado, mas não memorizado, não utiliza o recurso de login, e sim o de logs de monitoramento de segurança. Ao ativar a proteção contra ameaças para o cliente da aplicação e codificar uma impressão digital do dispositivo na solicitação, o Amazon Cognito associa os eventos do usuário ao dispositivo confirmado. 

**Como obter uma nova chave do dispositivo**

1. Inicie a sessão de login do seu usuário com uma solicitação de [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API.

1. Responda a todos os desafios de autenticação [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)até receber tokens web JSON (JWTs) que marquem a sessão de login do usuário como concluída.

1. Na aplicação, registre os valores que o Amazon Cognito gera em `NewDeviceMetadata` na resposta `RespondToAuthChallenge` ou `InitiateAuth`: `DeviceGroupKey` e `DeviceKey`.

1. Gere um novo segredo de SRP para o usuário: um salt e um verificador de senha. Essa função está disponível em SDKs que fornecem bibliotecas SRP.

1. Solicite ao usuário um nome de dispositivo ou gere um com base nas características do dispositivo do usuário.

1. Forneça o token de acesso, a chave do dispositivo, o nome do dispositivo e o segredo SRP do usuário em uma solicitação de [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html)API. Se o grupo de usuários estiver definido como **Sempre memorizar** os dispositivos, o registro do usuário estará concluído.

1. Se o Amazon Cognito respondeu a `ConfirmDevice` com `"UserConfirmationNecessary": true`, solicite que o usuário escolha se gostaria de memorizar o dispositivo. Se eles afirmarem que querem se lembrar do dispositivo, gere uma solicitação de [UpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateDeviceStatus.html)API com o token de acesso, a chave do dispositivo e. `"DeviceRememberedStatus": "remembered"`

1. Se você instruiu o Amazon Cognito a memorizar o dispositivo, na próxima vez em que ele fizer login, em vez de um desafio de MFA, será apresentado um desafio `DEVICE_SRP_AUTH`.

## Fazer login com um dispositivo
<a name="user-pools-remembered-devices-signing-in-with-a-device"></a>

Depois que o dispositivo de um usuário é configurado para ser memorizado, o Amazon Cognito não exige mais que ele envie um código de MFA ao fazer login com a mesma chave do dispositivo. A autenticação do dispositivo substitui apenas o desafio da autenticação MFA por um desafio de autenticação do dispositivo. Não é possível conectar os usuários somente com a autenticação do dispositivo. O usuário deve primeiro concluir a autenticação com a senha ou um desafio personalizado. Veja a seguir o processo de autenticação de um usuário em um dispositivo memorizado.

Para realizar a autenticação do dispositivo em um fluxo que usa [gatilhos Lambda do desafio de autenticação personalizada](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-challenge.html), passe um `DEVICE_KEY` parâmetro na sua solicitação de API. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Depois que o usuário passar por todos os desafios e o desafio `CUSTOM_CHALLENGE` gerar um valor `issueTokens` de `true`, o Amazon Cognito vai gerar um desafio `DEVICE_SRP_AUTH` final.

**Como fazer login com um dispositivo**

1. Recupere a chave do dispositivo do usuário do armazenamento do cliente.

1. Inicie a sessão de login do seu usuário com uma solicitação de [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API. Selecione um `AuthFlow` de `USER_SRP_AUTH`, `REFRESH_TOKEN_AUTH`, `USER_PASSWORD_AUTH` ou `CUSTOM_AUTH`. Em `AuthParameters`, adicione a chave do dispositivo do usuário ao parâmetro `DEVICE_KEY` e inclua os outros parâmetros necessários para o fluxo de login selecionado.

   1. Também é possível transmitir `DEVICE_KEY` nos parâmetros de uma resposta `PASSWORD_VERIFIER` a um desafio de autenticação.

1. Forneça as respostas do desafio até receber um desafio `DEVICE_SRP_AUTH` na resposta.

1. Em uma solicitação de [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)API, envie um `ChallengeName` de `DEVICE_SRP_AUTH` e parâmetros para `USERNAME``DEVICE_KEY`, `SRP_A` e.

1. O Amazon Cognito responde com um desafio `DEVICE_PASSWORD_VERIFIER`. Essa resposta ao desafio inclui valores para `SECRET_BLOCK` e `SRP_B`.

1. Com a biblioteca de SRP, gere e envie os parâmetros `PASSWORD_CLAIM_SIGNATURE`, `PASSWORD_CLAIM_SECRET_BLOCK`, `TIMESTAMP`, `USERNAME` e `DEVICE_KEY`. Envie-os em uma solicitação `RespondToAuthChallenge` adicional.

1. Complete desafios adicionais até receber os do usuário JWTs.

O pseudocódigo a seguir demonstra como calcular valores para a resposta `DEVICE_PASSWORD_VERIFIER` ao desafio. Para autenticação SRP com um dispositivo, gere um *novo* segredo de SRP para o usuário: uma nova senha de alta entropia `DeviceSecret`, um salt e o verificador de senha associado. Esses valores são distintos da senha, do salt e do verificador usados para a autenticação SRP do usuário. Eles são usados somente para autenticação do dispositivo e são armazenados somente no dispositivo. As funções para gerar os segredos SRP para os dispositivos dos usuários estão disponíveis em [bibliotecas SRP](https://github.com/secure-remote-password/implementations) que estão disponíveis em várias. SDKs

```
PASSWORD_CLAIM_SECRET_BLOCK = SECRET_BLOCK
TIMESTAMP = "Tue May 7 00:09:40 UTC 2025"
k = SHA256(N || g) as a non-negative integer in big-endian
u = SHA256(SRP_A || SRP_B) as a non-negative integer in big-endian
x = SHA256(salt || SHA256(DeviceGroupKey || DeviceKey || ":" || DeviceSecret)) as a non-negative integer in big-endian
S_USER = (SRP_B - k * g^x)^(a + u * x) % N
K_USER = HKDF_HMAC_SHA256(salt=u, ikm=S_USER, info="Caldera Derived Key", length=16 bytes)
PASSWORD_CLAIM_SIGNATURE = Base64(HMAC_SHA256(key=K_USER, message=(DeviceGroupKey || DeviceKey || PASSWORD_CLAIM_SECRET_BLOCK || TIMESTAMP)))
```

## Visualizar, atualizar e esquecer dispositivos
<a name="user-pools-remembered-devices-viewing-updating-forgetting"></a>

Com a API do Amazon Cognito, é possível implementar os recursos a seguir na aplicação.

1. Exibir informações sobre o dispositivo atual do usuário.

1. Exiba uma lista de todos os dispositivos do usuário.

1. Esqueça um dispositivo.

1. Atualize o estado memorizado do dispositivo.

Os tokens de acesso que autorizam as solicitações de API nas descrições a seguir devem incluir o escopo `aws.cognito.signin.user.admin`. O Amazon Cognito adiciona uma reivindicação desse escopo a todos os tokens de acesso que você gera com a API de grupos de usuários do Amazon Cognito. IdPs Os terceiros devem gerenciar separadamente os dispositivos e o MFA para seus usuários que se autenticam no Amazon Cognito. No login gerenciado, é possível solicitar o escopo `aws.cognito.signin.user.admin`, mas o login gerenciado adiciona automaticamente as informações do dispositivo a logs de usuário de segurança avançados e não oferece a possibilidade de memorizar os dispositivos.

**Exibir informações sobre um dispositivo**  
É possível consultar informações sobre o dispositivo de um usuário para determinar se ele ainda está em uso. Por exemplo, convém desativar dispositivos memorizados depois que eles não tiverem feito login por 90 dias. 
+ Para exibir as informações do dispositivo do usuário em um aplicativo cliente público, envie a chave de acesso e a chave do dispositivo do usuário em uma solicitação de [GetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetDevice.html)API.
+ Para exibir as informações do dispositivo do usuário em um aplicativo cliente confidencial, assine uma solicitação de [AdminGetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetDevice.html)API com AWS credenciais e envie o nome de usuário, a chave do dispositivo e o grupo de usuários do usuário.

**Exibir uma lista de todos os dispositivos do usuário.**  
É possível exibir uma lista de todos os dispositivos do usuário e as respectivas propriedades. Por exemplo, convém verificar se o dispositivo atual corresponde a um dispositivo memorizado. 
+ Em um aplicativo de cliente público, envie o token de acesso do usuário em uma solicitação de [ListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListDevices.html)API.
+ Em um aplicativo de cliente confidencial, assine uma solicitação de [AdminListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListDevices.html)API com AWS credenciais e envie o nome de usuário e o grupo de usuários do seu usuário.

**Esquecer um dispositivo**  
É possível excluir a chave do dispositivo de um usuário. Convém fazer isso ao constatar que o usuário não usa mais um dispositivo ou ao detectar atividades incomuns e solicitar que um usuário conclua a MFA novamente. Para registrar novamente o dispositivo em um momento posterior, é necessário gerar e armazenar uma nova chave do dispositivo.
+ Em um aplicativo de cliente público, envie a chave do dispositivo e o token de acesso do usuário na solicitação [ForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgetDevice.html)da API.
+ Em um aplicativo cliente confidencial, envie a chave do dispositivo e o token de acesso do usuário na solicitação [AdminForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminForgetDevice.html)da API.