Gerenciando a interface do usuário hospedada e o servidor de autorização - 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á.

Gerenciando a interface do usuário hospedada e o servidor de autorização

Um grupo de usuários do Amazon Cognito com um domínio é um servidor de autorização OAuth compatível com -2.0 e uma interface de usuário (UI) ready-to-use hospedada para autenticação. O servidor de autorização roteia solicitações de autenticação, emite e gerencia tokens JSON da web (JWTs) e fornece informações de atributos do usuário. A interface de usuário hospedada é uma coleção de interfaces da web para atividades básicas de inscrição, login, autenticação multifator e redefinição de senha no grupo de usuários. Também é um hub central para autenticação com os provedores de identidade terceirizados (IdPs) que você associa ao seu aplicativo. A aplicação pode invocar a interface de usuário hospedada e os endpoints de autorização quando você quiser autenticar e autorizar usuários. Você pode fazer com que a experiência do usuário da interface hospedada se adapte à sua marca com seu próprio logotipo e CSS personalização. Para receber mais informações sobre os componentes da interface de usuário hospedada e do servidor de autorização, consulte Endpoints do grupo de usuários e referência de interface de usuário hospedada.

nota

A interface de usuário hospedada do Amazon Cognito não é compatível com a autenticação personalizada com gatilhos do Lambda de desafio de autenticação personalizada.

Configurando a interface de usuário hospedada com AWS Amplify

Se você usa AWS Amplify para adicionar autenticação ao seu aplicativo web ou móvel, você pode configurar sua interface de usuário hospedada usando a interface de linha de comando (CLI) e as bibliotecas na AWS Amplify estrutura. Para adicionar autenticação ao seu aplicativo, você usa o AWS Amplify CLI para adicionar a Auth categoria ao seu projeto. Em seguida, em seu código de cliente, você usa as AWS Amplify bibliotecas para autenticar usuários com seu grupo de usuários do Amazon Cognito.

Você pode exibir uma interface de usuário hospedada pré-criada ou federar usuários por meio de um endpoint OAuth 2.0 que redireciona para um provedor de login social, como Facebook, Google, Amazon ou Apple. Depois que um usuário se autentica com sucesso no provedor social, AWS Amplify cria um novo usuário em seu grupo de usuários, se necessário, e depois fornece o OIDC token do usuário ao seu aplicativo.

Os exemplos a seguir mostram como usar AWS Amplify para configurar a interface de usuário hospedada com provedores sociais em seu aplicativo.

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

Criar um cliente da aplicação
  1. Acesse o console do Amazon Cognito. Se solicitado, insira suas AWS credenciais.

  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). Um cliente público normalmente opera a partir dos dispositivos de seus usuários e usa dispositivos não autenticados e autenticados por token. APIs Um cliente confidencial normalmente opera a partir de um aplicativo em um servidor central no qual você confia segredos e API credenciais do cliente e usa cabeçalhos e AWS Identity and Access Management credenciais de autorização 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. Configure a Authentication flow session duration (Duração da sessão do fluxo de autenticação). Esse é o tempo que os usuários têm para concluir cada desafio de autenticação antes que o token da sessão expire.

  10. (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 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.

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

  12. 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).

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

  14. (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.

  15. Escolha Create (Criar).

  16. 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. Adicione um retorno de chamada URL em Retorno URL (s) de chamada permitido. Um retorno de chamada URL é para onde o usuário é redirecionado após um login bem-sucedido.

  3. Adicione uma saída em Saída (s) URL permitida (s). URL A saída URL é para onde seu usuário é redirecionado após sair.

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

  5. Em Tipos de concessão OAuth 2.0, selecione Concessão de código de autorização para retornar um código de autorização que é então 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, uma aplicação personalizada é 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 do código de autorização, junto com a chave de prova para o código Exchange (PKCE), para aplicativos móveis.

  6. Em Tipos de concessão OAuth 2.0, selecione Concessão implícita para que os tokens JSON web do grupo de usuários (JWT) sejam devolvidos a você pelo 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. Escolha Salvar alterações.

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

Visualizar a página de login

No console do Amazon Cognito, selecione o botão View Hosted UI (Visualizar UI hospedada) na configuração do cliente da aplicação, em App clients and analytics (Clientes e análise de aplicações), na guia App integration (Integração de aplicações). Esse botão levará você a uma página de login na UI hospedada com os parâmetros básicos a seguir.

  • O ID do cliente da aplicação

  • Uma solicitação de concessão de código de autorização

  • Uma solicitação para todos os escopos que você ativou para o cliente da aplicação atual

  • O primeiro retorno de chamada URL na lista para o cliente de aplicativo atual

O botão View hosted UI (Visualizar UI hospedada) é útil quando você deseja testar as funções básicas da UI hospedada. Você pode personalizar seu login URL com parâmetros adicionais e modificados. Na maioria dos casos, os parâmetros gerados automaticamente do link View hosted UI (Visualizar UI hospedada) não atendem totalmente às necessidades da aplicação. Nesses casos, você deve personalizar o URL que seu aplicativo invoca ao fazer login com seus usuários. Para obter mais informações sobre chaves e valores de parâmetros de login, consulte Endpoints do grupo de usuários e referência de interface de usuário hospedada.

A página de login da UI hospedada usa o seguinte formato. URL Este exemplo solicita uma concessão de código de autorização com o parâmetro response_type=code.

https://<your domain>/oauth2/authorize?response_type=code&client_id=<your app client id>&redirect_uri=<your callback url>

É possível recuperar o domínio do grupo de usuários pela guia Integração de aplicações. Na mesma guia, você pode identificar o cliente do aplicativoIDs, seu retorno de chamadaURLs, seus escopos permitidos e outras configurações em Clientes e análises do aplicativo.

Ao navegar até o endpoint /oauth2/authorize com parâmetros personalizados, o Amazon Cognito redireciona você ao endpoint /oauth2/login ou, se tiver um parâmetro identity_provider ou idp_identifier, ele redireciona você silenciosamente para a página de login de seu IdP. Para ver um exemplo URL que ignora a interface do usuário hospedada, consulteSAMLinício de sessão nos grupos de usuários do Amazon Cognito.

Exemplo de solicitação de interface de usuário hospedada para uma concessão implícita

Você pode visualizar a página da web de login da UI hospedada com o seguinte URL para a concessão de código implícito 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://mydomain.us-east-1.amazoncognito.com/authorize?response_type=token&client_id=1example23456789&redirect_uri=https://mydomain.example.com

Os tokens de identidade e acesso aparecem como parâmetros anexados ao seu redirecionamentoURL.

O URL a seguir é um exemplo de resposta de uma solicitação de concessão implícita.

https://mydomain.example.com/#id_token=eyJraaBcDeF1234567890&access_token=eyJraGhIjKlM1112131415&expires_in=3600&token_type=Bearer

Coisas que você precisa saber sobre a interface hospedada e o servidor de autorização

A interface de usuário hospedada e a confirmação de usuários como administradores

Para usuários locais do grupo de usuários, a interface de usuário hospedada funciona melhor quando você configura o grupo de usuários para Permitir que o Cognito envie mensagens automaticamente para verificar e confirmar. Quando você ativa essa configuração, o Amazon Cognito envia uma mensagem com um código de confirmação para os usuários que se cadastram. Em vez disso, quando você confirma os usuários como administradores do grupo de usuários, a interface de usuário hospedada exibe uma mensagem de erro após a inscrição. Nesse estado, o Amazon Cognito criou o usuário, mas não conseguiu enviar uma mensagem de verificação. Você ainda pode confirmar os usuários como administradores, mas eles podem entrar em contato com a central de suporte após encontrarem um erro. Para receber mais informações sobre confirmação administrativa, consulte Permitir que os usuários se inscrevam na aplicação, mas mediante confirmação deles como administradores do grupo de usuários.

Visualizar as alterações na configuração da interface de usuário hospedada

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.

Decodificar tokens do grupo de usuários

Os tokens do grupo de usuários do Amazon Cognito são assinados usando um RS256 algoritmo. Você pode decodificar e verificar os tokens do grupo de usuários usando AWS Lambda, consulte Decodificar e verificar os tokens do Amazon JWT Cognito em. GitHub

A interface e a TLS versão hospedadas

A interface de usuário hospedada requer criptografia em trânsito. Os domínios de grupos de usuários fornecidos pelo Amazon Cognito exigem uma versão TLS mínima de 1.2. Os domínios personalizados oferecem suporte, mas não exigem a TLS versão 1.2. Como o Amazon Cognito gerencia a configuração da interface do usuário hospedada e dos endpoints do servidor de autorização, você não pode modificar TLS os requisitos do seu domínio do grupo de usuários.

A interface e CORS as políticas hospedadas

A interface de usuário hospedada do Amazon Cognito não oferece suporte a políticas personalizadas de origem de compartilhamento de recursos entre origens (CORS). Uma CORS política na interface do usuário hospedada impediria que os usuários passassem parâmetros de autenticação em suas solicitações. Em vez disso, implemente uma CORS política na interface web do seu aplicativo. O Amazon Cognito retorna um cabeçalho de Access-Control-Allow-Origin: * resposta às solicitações para os seguintes OAuth endpoints.

UI hospedada e cookies do servidor de autorização

Os endpoints do pool de usuários do Amazon Cognito definem cookies nos navegadores dos usuários. Os cookies estão em conformidade com os requisitos de alguns navegadores de que os sites não definam cookies de terceiros. Eles têm como escopo apenas os endpoints do seu grupo de usuários e incluem o seguinte:

  • Um XSRF-TOKEN cookie para cada solicitação.

  • Um csrf-state cookie para consistência da sessão quando um usuário é redirecionado.

  • Um cookie de cognito sessão que preserva as tentativas de login bem-sucedidas por uma hora.

No iOS, você pode bloquear todos os cookies. Essa configuração não é compatível com a interface hospedada. Para trabalhar com usuários que possam ativar essa configuração, crie a autenticação do grupo de usuários em um aplicativo iOS nativo com um AWS SDK. Nesse cenário, você pode criar seu próprio armazenamento de sessão que não seja baseado em cookies.