Como usar a interface do usuário hospedada do Amazon Cognito para cadastro e acesso - Amazon Cognito

Como usar a interface do usuário hospedada do Amazon Cognito para cadastro e acesso

A interface do usuário hospedada do Amazon Cognito fornece um servidor de autorização compatível com OAuth 2.0. Ele inclui a implementação padrão de fluxos de usuário final, como, por exemplo, registro e autenticação. É possível personalizar os fluxos do usuário, como a adição de autenticação multifator (MFA), alterando a configuração do grupo de usuários. Sua aplicação vai redirecionar para a interface do usuário hospedada que processará os fluxos de usuário. É possível personalizar a experiência do usuário fornecendo logos específicas para a marca e também personalizando o design dos elementos da interface do usuário hospedada. A interface do usuário hospedada do Amazon Cognito também permite que você adicione a capacidade de os usuários finais acessarem com provedores sociais (Facebook, Amazon, Google e Apple), bem como usando qualquer provedor SAML ou compatível com OpenID Connect (OIDC).

Como configurar a interface do usuário hospedada com o AWS Amplify

Se você usar o AWS Amplify para adicionar autenticação ao seu aplicativo web ou móvel, poderá configurar sua interface do usuário hospedada usando a interface de linha de comando (CLI) e as bibliotecas no framework do AWS Amplify. Para adicionar autenticação à sua aplicação, use a CLI do AWS Amplify para adicionar a categoria Auth ao seu projeto. Depois, no seu código de cliente, você usa as bibliotecas do AWS Amplify para autenticar usuários com seu grupo de usuários do Amazon Cognito.

Você pode exibir uma interface do usuário hospedada pré-compilada ou federar usuários por meio de um endpoint OAuth 2.0, que faz o redirecionamento para um provedor de login social, como o Facebook, o Google, a Amazon ou a Apple. Após um usuário se autenticar com êxito com o provedor social, se necessário, o AWS Amplify criará um novo usuário no seu grupo de usuários e fornecerá o token OIDC do usuário à aplicação.

Para obter mais informações, consulte a documentação do framework do AWS Amplify para sua plataforma de aplicativos:

Como configurar a interface do usuário hospedada com o console do Amazon Cognito

Original console

Criar um cliente da aplicação

  1. Acesse o console do Amazon Cognito. Se solicitado, insira suas credenciais da AWS.

  2. Selecione Manage User Pools.

  3. Escolha um grupo de usuários existente na lista ou crie um grupo de usuários.

  4. Na barra de navegação no lado esquerdo da página, em General settings (Configurações gerais), escolha App clients (Clientes da aplicação).

  5. Escolha Add an app client.

  6. Insira um nome para seu aplicativo.

  7. A menos que exigido pelo seu fluxo de autorização, desmarque a opção Generate client secret (Gerar chave secreta do cliente). A chave secreta do cliente é usada por aplicativos que têm um componente do servidor que pode protegê-la.

  8. (Opcional) Altere as configurações de validade do token.

  9. Selecione as opções de Auth Flows Configuration (Configuração de fluxos de autenticação). Para mais informações, consulte Fluxo de autenticação de grupo de usuários.

  10. Escolha uma Security configuration (Configuração de segurança). Recomendamos que você selecione Enabled (Habilitada).

  11. (Opcional) Escolha Set attribute read and write permissions (Definir as permissões de leitura e gravação para os atributos). Para mais informações, consulte Escopos e permissões de atributo.

  12. Escolha Create app client.

  13. Anote o App client id (ID do cliente de aplicativo).

  14. Escolha Return to pool details (Retornar aos detalhes do grupo).

Configurar a aplicação

  1. Selecione App client settings (Configurações do cliente da aplicação) na barra de navegação no lado esquerdo da página do console.

  2. Selecione Cognito User Pool (Grupo de usuários do Cognito) como um dos Enabled Identity Providers (Provedores de identidade habilitados).

    nota

    Para acessar com provedores de identidade (IdPs) externos, como Facebook, Amazon, Google ou Apple, bem como por meio de IdPs OpenID Connect (OIDC) ou SAML, primeiro configure-os conforme descrito nas seguintes etapas e retorne à página App client settings (Configurações do cliente da aplicação) para habilitá-los.

  3. Insira Callback URL(s) (URL(s) de retorno de chamada). Um URL de retorno de chamada indica para onde o usuário será redirecionado após um acesso bem-sucedido.

  4. Insira Sign out URL(s) (URL(s) de saída). Um URL de saída indica para onde o usuário deve ser redirecionado após a desconexão.

  5. Selecione Authorization code grant (Concessão de código de autorização) para retornar um código de autorização que é trocado por tokens do grupo de usuários. Como os tokens nunca são expostos diretamente a um usuário final, é menos provável que eles sejam comprometidos. No entanto, um aplicativo personalizado é necessário no backend para trocar o código de autorização por tokens do grupo de usuários. Por motivos de segurança, recomendamos que você use o fluxo de concessão de código de autorização juntamente com o Proof key for code Exchange (PKCE) para aplicativos móveis.

  6. Selecione Implicit grant (Concessão implícita) para que os JSON Web Tokens (JWT) do grupo de usuários sejam retornados do Amazon Cognito. Você pode usar esse fluxo quando não houver backend disponível para trocar um código de autorização por tokens. Ele também é útil para depurar tokens.

  7. Você pode habilitar Authorization code grant (Concessão de código de autorização) e Implicit code grant (Concessão de código implícita) e, em seguida, usar cada concessão conforme necessário.

  8. A menos que deseje especificamente excluir um, marque as caixas de seleção para todos os Allowed OAuth scopes (Escopos OAuth permitidos).

  9. Selecione Client credentials somente se o aplicativo precisa solicitar tokens de acesso para ele mesmo, e não em nome de um usuário.

  10. Selecione Save changes.

Configurar um domínio

  1. Selecione Choose domain name (Escolher nome de domínio).

  2. Na página Domain name (Nome de domínio), digite um prefixo de domínio e confira a disponibilidade ou insira seu próprio domínio.

  3. Anote o endereço completo do domínio.

  4. Selecione Save changes.

New console

Criar um cliente da aplicação

  1. Acesse o console do Amazon Cognito. Se for solicitado, insira suas credenciais da AWS.

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

  3. Escolha um grupo de usuários existente na lista ou crie um grupo de usuários.

  4. Selecione a guia App integration (Integração da aplicação).

  5. Em App clients (Clientes da aplicação), selecione Create an app client (Criar um cliente da aplicação).

  6. Selecione um App type (Tipo de aplicação): Public client (Cliente público), Confidential client (Cliente confidencial) ou Other (Outro). Normalmente um Public client (Cliente público) opera a partir dos dispositivos de seus usuários e usa APIs não autenticadas e autenticadas com token. Normalmente um Confidential client (Cliente confidencial) opera a partir de uma aplicação em um servidor central de confiança com segredos do cliente e credenciais de API, e usa cabeçalhos de autorização e credenciais AWS Identity and Access Management para assinar solicitações. Se o seu caso de uso for diferente das configurações predefinidas do cliente da aplicação para um Public client (Cliente público) ou um Confidential client (Cliente confidencial), selecione Other (Outro).

  7. Insira um App client name (Nome do cliente da aplicação).

  8. Selecione os Authentication flows (Fluxos de autenticação) que deseja permitir no cliente da aplicação.

  9. (Opcional) Configure a validade do token.

    1. Especifique a Refresh token expiration (Validade do token de atualização) para o cliente da aplicação. O valor padrão é de 30 dias. Você pode alterá-la para qualquer valor entre 1 hora e 10 anos.

    2. Especifique a Access token expiration (Validade do token de acesso) para o cliente da aplicação. O valor padrão é uma hora. Você pode alterá-la para qualquer valor entre 5 minutos e 24 horas.

    3. Especifique a ID token expiration (Validade do token de ID) para o cliente da aplicação. O valor padrão é uma hora. Você pode alterá-la para qualquer valor entre 5 minutos e 24 horas.

      Importante

      Se você usar a interface do usuário hospedada e definir o ciclo de vida do token para menos de uma hora, o usuário será capaz de usar tokens com base na duração do cookie de sessão, que atualmente está fixada em uma hora.

  10. Selecione Generate client secret (Gerar segredo do cliente) para que o Amazon Cognito gere um segredo do cliente para você. Normalmente segredos dos clientes são associados a clientes confidenciais.

  11. Escolha se você vai Enable token revocation (Habilitar revogação de token) para esse cliente da aplicação. Isso aumentará o tamanho dos tokens. Para mais informações, consulte Revoking Tokens (Como revogar tokens).

  12. Escolha se você vai Prevent error messages that reveal user existence (Evitar mensagens de erro que revelem a existência do usuário) para esse cliente da aplicação. O Amazon Cognito responderá a solicitações de acesso para usuários inexistentes com uma mensagem genérica informando que o nome de usuário ou a senha estavam incorretos.

  13. (Opcional) Defina as Attribute read and write permissions (Permissões de leitura e gravação de atributos) para esse cliente da aplicação. Seu cliente da aplicação pode ter permissão para leitura e gravação de um subconjunto limitado do esquema de atributos do seu grupo de usuários.

  14. Escolha Create (Criar).

  15. Anote o Client id (ID do cliente). Isso identificará o cliente da aplicação nas solicitações de cadastro e acesso.

Configurar a aplicação

  1. Na guia App integration (Integração da aplicação), selecione o cliente da aplicação em App clients (Clientes da aplicação). Revise suas informações atuais sobre a Hosted UI (interface do usuário hospedada).

  2. Add a callback URL (Adicionar um URL de retorno de chamada) em Allowed callback URL(s) (URL(s) de retorno de chamada permitidos). Um URL de retorno de chamada é para onde o usuário será redirecionado após realizar o acesso com êxito.

  3. Add a sign-out URL (Adicionar um URL de saída) em Allowed sign-out URL(s) (URL(s) de saída permitidos). Um URL de saída é para onde o usuário será redirecionado após sair.

  4. Adicione pelo menos uma das opções listadas da lista de Identity providers (Provedores de identidade).

  5. Em OAuth 2.0 grant types (Tipos de concessões OAuth 2.0), selecione Authorization code grant (Concessão de código de autorização) para retornar um código de autorização que é trocado por tokens do grupo de usuários. Como os tokens nunca são expostos diretamente a um usuário final, é menos provável que eles fiquem comprometidos. No entanto, um aplicativo personalizado é necessário no backend para trocar o código de autorização por tokens do grupo de usuários. Por motivos de segurança, recomendamos que você use o fluxo de concessão de código de autorização juntamente com o Proof key for code Exchange (PKCE) para aplicativos móveis.

  6. Em OAuth 2.0 grant types (Tipos de concessão OAuth 2.0), selecione Implicit grant (Concessão implícita) para que os JSON Web Tokens (JWT) do grupo de usuários sejam retornados para você do Amazon Cognito. Você pode usar esse fluxo quando não houver backend disponível para trocar um código de autorização por tokens. Ele também é útil para depurar tokens.

  7. É possível habilitar tanto as concessões de Authorization code (Código de autorização) quanto de Implicit code (Código implícito) e, em seguida, usar cada concessão conforme necessário. Se nenhuma das concessões Authorization code (Código de autorização) ou Implicit code (Código implícito) forem selecionadas e seu cliente da aplicação tiver um segredo de cliente, você pode habilitar concessões de Client credentials (Credenciais do cliente). Só selecione Client credentials (Credenciais do cliente) se a aplicação precisar solicitar tokens de acesso em nome dela mesma, e não em nome de um usuário.

  8. Selecione os OpenID Connect scopes (Escopos do OpenID Connect) que deseja autorizar para esse cliente da aplicação.

  9. Selecione Save changes.

Configurar um domínio

  1. Acesse a guia App integration (Integração da aplicação) para o seu grupo de usuários.

  2. Ao lado de Domain (Domínio), escolha Action (Ações) e, em seguida, escolha Create custom domain (Criar domínio personalizado) ou Create Cognito domain (Criar domínio do Cognito). Se já tiver configurado um domínio de grupo de usuários, escolha Delete Cognito domain (Excluir domínio do Cognito) ou Delete custom domain (Excluir domínio personalizado) antes de criar seu novo domínio personalizado.

  3. Insira um prefixo de domínio disponível para usar com um Cognito domain (Domínio do Cognito). Para informações sobre como configurar um Domínio personalizado, consulte Uso do próprio domínio para a interface do usuário hospedada

  4. Escolha Create (Criar).

Para visualizar sua página de login

Você pode visualizar a página da web de login da interface do usuário hospedada com o seguinte URL. Anote o response_type. Neste caso, response_type=code para a concessão de código de autorização.

https://<your_domain>/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>

Você pode visualizar a página da web de login da interface do usuário hospedada com o URL a seguir para a concessão de código implícita onde response_type=token. Depois de um login bem-sucedido, o Amazon Cognito retorna tokens do grupo de usuários para a barra de endereço do seu navegador da Web.

https://<your_domain>/login?response_type=token&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>

Você pode encontrar o token que identidade do JSON web token (JWT) logo depois do parâmetro #idtoken= na resposta.

Aqui está um exemplo de resposta de uma solicitação de concessão implícita. Sua string de token de identidade será muito maior.

https://www.example.com/#id_token=123456789tokens123456789&expires_in=3600&token_type=Bearer

Se as alterações nas páginas da sua interface do usuário hospedada não aparecerem imediatamente, aguarde alguns minutos e atualize a página. Os tokens de grupos de usuários do Amazon Cognito são assinados usando um algoritmo RS256. Você pode decodificar e verificar tokens do grupo de usuários usando o AWS Lambda, consulte Decodificar e verificar tokens JWT do Amazon Cognito no site do GitHub da AWS.

O domínio é exibido na página Domain name (Nome do domínio). O ID de cliente do aplicativo e o URL de retorno de chamada são exibidos na página App client settings (Configurações do cliente do aplicativo).

nota

A página da Web de login hospedada do Amazon Cognito não oferece suporte ao fluxo de autenticação personalizado.