Alguns meses atrás, eu escrevi sobre o novo recurso Your User Pools para o Amazon Cognito. Como escrevi na época, você pode usar esse recurso para adicionar facilmente inscrição e login de usuários para seus aplicativos móveis e web. Os diretórios de usuário totalmente gerenciados podem ser escalados para centenas de milhões de usuários e você pode ter vários diretórios por conta da AWS.
Criar um pool de usuários leva apenas alguns minutos e você pode decidir exatamente quais atributos (endereço, e-mail, sexo, número de telefone, e assim por diante, além de atributos personalizados) devem ser inseridos quando um novo usuário se inscrever para a sua aplicação ou serviço. Do lado da segurança, você pode especificar a força da senha desejada, pedir o uso de autenticação de múltiplos fatores (MFA) e verificar os novos usuários através do número de telefone ou endereço de e-mail.
Agora totalmente disponível
Lançamos o Your User Pools como um beta público e recebemos um grande volume de feedback. Hoje estamos tornando o Your User Pools totalmente disponível e também estamos adicionando uma grande coleção de novas funcionalidades:
- Device Remembering – O Cognito pode lembrar os dispositivos que cada usuário uso na inscrição.
- User Search – Procurar por usuários em um pool de usuário com base em um atributo.
- Customizable Email Addresses – Controle os endereços de e-mail para e-mails para os usuários em seu pool de usuários.
- Attribute Permissions – Defina permissões refinadas para cada atributo de usuário.
- Custom Authentication Flow – Use novas APIs e gatilhos do Lambda para personalizar o fluxo de login.
- Admin Sign-in – Seu aplicativo agora pode assinar em usuários de servidores de back-end ou funções lambda.
- Global Sign-out – Permita que um usuário saia de todos os dispositivos ou navegadores conectados.
- Custom Expiration Period – Defina um período de expiração de tokens de atualização.
- API Gateway Integration – Use um pool de usuário para autorizar solicitações do Amazon API Gateway.
- New Regions – O Cognito Your User Pools estão agora disponíveis em outras regiões da AWS.
Vamos dar uma olhada em cada um desses novos recursos!
Device Remembering
O Cognito agora pode lembrar o conjunto de dispositivos utilizados por cada usuário. Você, como o criador do pool de usuários, tem a opção de permitir que seus usuários solicitem esse comportamento. Se você tiver habilitado o MFA para um pool de usuário, você também pode optar por eliminar a necessidade de entrada de um código de MFA em um dispositivo que tenha sido lembrado. Isso simplifica e agiliza o processo de login em um dispositivo lembrado, enquanto ainda necessitam a entrada de um código de MFA para dispositivos não reconhecidos. Você também pode listar os dispositivos do usuário e permitir-lhes sair de um dispositivo remotamente.
Você pode ativar e personalizar esse recurso quando você criar um novo pool de usuários; você também pode configurá-lo para um pool existente. Veja como você pode ativar e personalizá-lo quando você criar um novo pool do usuário. Primeiro você ativa o recurso clicando em Always ou User Opt-in:
Então, você indica se você gostaria de suprimir MFA em dispositivos lembrados:
Os SDKs de AWS Mobile para iOS, Android e JavaScript contém novos métodos que você pode chamar do seu aplicativo para lembrar dispositivos.
User Search
Você, como o criador de um pool de usuários, agora pode procurar por usuários com base em um atributo do usuário, como username, given_name, family_name, name, preferred_user_name, email, phone_number, status ou user_status.
Você pode fazer uma combinação completo ou uma combinação de prefixo usando o AWS Management Console, a função API ListUsers ou a ferramenta de linha de comando list-users. Aqui está uma pesquisa direcionada ao console:
Customizable E-mail Addresses
Agora você pode especificar endereços em From e Reply-To para enviar e-mails que são usados para se comunicar com seus usuários. Veja como especificar os endereços quando você criar um novo pool:
Você precisará verificar o endereço com o Amazon Simple Email Service (SES) antes que você possa usá-lo (leia Verifying Email Addresses in Amazon SES para saber mais).
Attribute Permissions
Agora você pode definir permissões de leitura e escrita por app para cada atributo de usuário. Isto dá-lhe a capacidade de controlar quais aplicativos podem ver e/ou modificar cada um dos atributos que são armazenados para os usuários. Por exemplo, você poderia ter um atributo personalizado que indica se um usuário é um cliente, ou não. Seus aplicativos podem ver esse atributo, mas não podem modificá-los diretamente. Em vez disso, você deve atualizar este atributo usando uma ferramenta administrativa ou um processo de fundo. As permissões para os atributos do usuário podem ser definidas a partir do console, API ou CLI.
Custom Authentication Flow
Agora você pode usar um par de novas funções da API (InitiateAuth e RespondToAuthChallenge) e três novos triggers Lambda para criar seu próprio fluxo de login ou para personalizar o existente. Você pode, por exemplo, personalizar o fluxo de usuário para usuários com diferentes níveis de experiência, locais diferentes ou diferentes requisitos de segurança. Você pode exigir a utilização de um CAPTCHA para alguns usuários ou para todos os usuários, com as suas necessidades.
Os novos gatilhos Lambda são:
- Definir Auth Challenge – Chamado para iniciar o fluxo de autenticação personalizado;
- Create Auth Challenge – Invocada se um desafio de autenticação personalizado foi definido;
- Verify Auth Challenge Response – Chamado para verificar a validade de um desafio de autenticação personalizado.
Você pode configurar os triggers do Console desta forma:
Global Sign-out
Agora você pode dar aos seus usuários a opção de sair (invalidando tokens) de todos os dispositivos onde haviam sido iniciados. Os apps podem chamar a função [GlobalSignOut] usando um token de acesso válido que não esteja vencida e não-revogado. Os desenvolvedores podem remotamente definir a saída de qualquer usuário chamando a função [AdminUserGlobalSignOut] usando um ID de Pool e um nome de usuário.
Custom Expiration Period
O Cognito sign-in faz uso de tokens “refresh” para eliminar a necessidade de iniciar a sessão cada vez que um aplicativo é aberto. Por padrão, o token expira após 30 dias. A fim de dar-lhe mais controle sobre o equilíbrio entre a segurança e conveniência, agora você pode definir um período de expiração customizada para os tokens de atualização gerados por cada uma dos seus pools de usuário.
API Gateway Integration
Pool de usuários do Cognito agora pode trabalhar lado a lado com o Amazon API Gateway para autorizar solicitações de API. Você pode configurar o API Gateway para aceitar tokens de identificação para autorizar usuários com base em sua presença em um pool de usuário.
Para fazer isso, você primeiro deve criar um Cognito User Pool Authorizer utilizando o Console do API Gateway, fazendo referência ao pool de usuário e escolha o cabeçalho de solicitação que irá conter o token de identificação:
Navegue até o método desejado e selecione o novo Authorizer:
Novas regiões
Como parte do lançamento de hoje nós estamos tornando o Cognito disponível na Região Oeste dos EUA (Oregon).
Além da disponibilidade existente na Região Leste dos EUA (Norte da Virgínia), estamos tornando o Your User Pools disponível nas regiões Europa (Irlanda), Oeste dos EUA (Oregon) e Ásia-Pacífico (Tóquio).
Já disponível
Esses novos recursos já estão disponíveis e você já pode começar a usá-los! Para saber mais, veja Getting Started with Your User Pools in Amazon Cognito.