Usar o próprio domínio para fazer login gerenciado - Amazon Cognito

Usar o próprio domínio para fazer login gerenciado

Após configurar um cliente da aplicação, você poderá configurar o grupo de usuários com um domínio personalizado para os serviços de domínio do login gerenciado. Com um domínio personalizado, os usuários podem fazer login na aplicação usando seu próprio endereço da web em vez do domínio de prefixo amazoncognito.com. Domínios personalizados melhoram a confiança do usuário em sua aplicação com um nome de domínio familiar, especialmente quando o domínio raiz corresponde ao domínio que hospeda a aplicação. Os domínios personalizados podem melhorar a conformidade com os requisitos de segurança da organização.

Um domínio personalizado tem alguns pré-requisitos, incluindo um grupo de usuários, um cliente da aplicação e um domínio da web de sua propriedade. Os domínios personalizados também exigem um certificado SSL, gerenciado com AWS Certificate Manager (ACM) no Leste dos EUA (N. da Virgínia). O Amazon Cognito cria uma distribuição do Amazon CloudFront, protegida em trânsito com seu certificado ACM. Como o domínio é de sua propriedade, é necessário criar um registro DNS que direcione o tráfego para a distribuição do CloudFront do seu domínio personalizado.

Com esses elementos prontos, você pode adicionar o domínio personalizado ao grupo de usuários por meio do console ou da API do Amazon Cognito. Isso envolve especificar o nome de domínio e o certificado SSL e, em seguida, atualizar sua configuração de DNS com o destino de alias fornecido. Depois de fazer essas alterações, você pode verificar se a página de login está acessível no seu domínio personalizado.

A maneira mais simples de criar um domínio personalizado é com uma zona hospedada pública no Amazon Route 53. O console do Amazon Cognito pode criar os registros DNS corretos em algumas etapas. Antes de começar, considere criar uma zona hospedada do Route 53 para um domínio ou subdomínio que você possua.

Como adicionar um domínio personalizado a um grupo de usuários

Para adicionar um domínio personalizado para seu grupo de usuários, especifique o nome de domínio no console do Amazon Cognito e forneça um certificado que você gerencia com o AWS Certificate Manager (ACM). Depois de adicionar seu domínio, o Amazon Cognito fornece um destino de alias, que você adiciona à sua configuração de DNS.

Pré-requisitos

Antes de começar, você precisa de:

  • Um grupo de usuários com um cliente de aplicativo. Para obter mais informações, consulte Conceitos básicos dos grupos de usuários.

  • Um domínio da Web do qual você é proprietário. O domínio superior deve ter um registro A DNS válido. Você pode atribuir qualquer valor a esse registro. O domínio superior pode ser a raiz do domínio ou um domínio inferior que fica um nível acima na hierarquia do domínio. Por exemplo, se o domínio personalizado for auth.xyz.exemplo.com, o Amazon Cognito precisará ser capaz de resolver xyz.exemplo.com como um endereço IP. Com o objetivo de evitar um impacto acidental na infraestrutura do cliente, o Amazon Cognito não aceita o uso de domínios de nível superior (TLDs) para domínios personalizados. Para obter mais informações, consulte Nomes de domínio.

  • A capacidade de criar um subdomínio para seu domínio personalizado. Recomendamos auth para o nome do subdomínio. Por exemplo, auth.example.com.

    nota

    Poderá ser necessário obter um novo certificado para o subdomínio do domínio personalizado se você não tiver um certificado curinga.

  • Um certificado TLS/SSL público gerenciado pelo ACM no Leste dos EUA (Norte da Virgínia). O certificado deve estar em us-east-1 porque será associado a uma distribuição no CloudFront, um serviço global.

  • Clientes de navegador compatíveis com Server Name Indication (SNI). A distribuição do CloudFront que o Amazon Cognito atribui aos domínios personalizados exige SNI. Você não pode alterar essa configuração. Para obter mais informações sobre SNI em distribuições do CloudFront, consulte Usar a SNI para atender a solicitações HTTPS no Guia do desenvolvedor do Amazon CloudFront.

  • Uma aplicação que permite que o servidor de autorização do grupo de usuários adicione cookies às sessões do usuário. O Amazon Cognito define vários cookies obrigatórios para páginas de login gerenciado. Entre eles estão cognito, cognito-fl e XSRF-TOKEN. Embora cada cookie individual respeite os limites de tamanho do navegador, alterações na configuração do grupo de usuários podem fazer com que os cookies do login gerenciado aumentem de tamanho. Um serviço intermediário, como o Application Load Balancer (ALB), na frente do domínio personalizado pode impor um tamanho máximo de cabeçalho ou tamanho total do cookie. Se a aplicação também definir seus próprios cookies, as sessões dos usuários poderão exceder esses limites. Para evitar conflitos de limite de tamanho, recomendamos que a aplicação não defina cookies no subdomínio que hospeda os serviços de domínio do grupo de usuários.

  • Permissão para atualizar as distribuições do Amazon CloudFront. Você pode fazer isso anexando a declaração de política do IAM a seguir a um usuário em sua Conta da AWS:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontUpdateDistribution", "Effect": "Allow", "Action": [ "cloudfront:updateDistribution" ], "Resource": [ "*" ] } ] }

    Para ter mais informações sobre como autorizar ações no CloudFront, consulte Using Identity-Based Policies (IAM Policies) for CloudFront (Usar políticas baseadas em identidade (políticas do IAM) para o CloudFront).

    Inicialmente, o Amazon Cognito usa suas permissões do IAM para configurar a distribuição do CloudFront, mas a distribuição é gerenciada pela AWS. Você não pode alterar a configuração da distribuição do CloudFront que o Amazon Cognito associou ao seu grupo de usuários. Por exemplo, não é possível atualizar as versões de TLS compatíveis na política de segurança.

Etapa 1: insira o nome de domínio personalizado

É possível adicionar seu domínio ao grupo de usuários usando a API ou o console do Amazon Cognito.

Amazon Cognito console
Para adicionar o domínio ao grupo de usuários diretamente do console do Amazon Cognito:
  1. Navegue até o menu Domínio em Identidade visual.

  2. Ao lado de Domínio, escolha Ações e Criar domínio personalizado ou Criar domínio do Amazon Cognito. Se já tiver configurado um domínio personalizado de grupo de usuários, clique em Excluir domínio personalizado antes de criar seu novo domínio personalizado.

  3. Ao lado de Domínio, selecione Ações e clique em Criar domínio personalizado. Se você já configurou um domínio personalizado, clique em Excluir domínio personalizado para excluir o domínio existente antes de criar seu novo domínio personalizado.

  4. Para o Custom domain (Domínio personalizado), insira o URL do domínio que você deseja usar com o Amazon Cognito. Seu nome de domínio pode incluir somente letras minúsculas, números e hífens. Não use um hífen como primeiro ou último caractere. Use pontos para separar nomes de subdomínio.

  5. Para o ACM certificate (Certificado do ACM), escolha o certificado SSL que você deseja usar para seu domínio. Somente certificados do ACM no Leste dos EUA (Norte da Virgínia) são elegíveis para uso com um domínio personalizado do Amazon Cognito, independentemente da Região da AWS do seu grupo de usuários.

    Se você não tem um certificado disponível, poderá usar o ACM para implantar um no Leste dos EUA (Norte da Virgínia). Para obter mais informações, consulte Conceitos básicos no Guia do usuário do AWS Certificate Manager.

  6. Escolha uma Versão de marca. Sua versão de marca se aplica a todas as páginas interativas nesse domínio. Seu grupo de usuários pode hospedar a identidade visual do login gerenciado ou da IU hospedada para todos os clientes da aplicação.

    nota

    Você pode ter um domínio personalizado e um domínio de prefixo, mas o Amazon Cognito só fornece o endpoint /.well-known/openid-configuration para o domínio personalizado.

  7. Escolha Criar.

  8. O Amazon Cognito retorna você ao menu Domínio. Uma mensagem intitulada Create an alias record in your domain's DNS (Criar um registro de alias no DNS do seu domínio) é exibida. Anote o Domain (Domínio) e Alias target (Destino do alias) exibidos no console. Eles serão usados na próxima etapa para direcionar o tráfego para o seu domínio personalizado.

API

O corpo da solicitação CreateUserPoolDomain a seguir cria um domínio personalizado.

{ "Domain": "auth.example.com", "UserPoolId": "us-east-1_EXAMPLE", "ManagedLoginVersion": 2, "CustomDomainConfig": { "CertificateArn": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } }

Etapa 2: adicionar um destino do alias e subdomínio

Nesta etapa, configure um alias por meio do seu provedor de serviços do servidor de nome de domínio (DNS) que aponta para o destino do alias da etapa anterior. Se você estiver usando o Amazon Route 53 para resolução do endereço DNS, escolha a seção To add an alias target and subdomain using Route 53 (Para adicionar um destino do alias e subdomínio usando o Route 53).

  • Se não estiver usando o Route 53 para resolução do endereço DNS, é necessário utilizar as ferramentas de configuração do seu provedor de serviço DNS para adicionar o destino do alias da etapa anterior ao registro DNS do domínio. O provedor DNS também precisará configurar o subdomínio para o seu domínio personalizado.

  1. Faça login no console do Route 53. Se solicitado, insira suas credenciais da AWS.

  2. Se não tiver uma zona hospedada pública no Route 53, crie uma com uma raiz que seja pai do seu domínio personalizado. Para obter mais informações, consulte Criar uma zona hospedada pública no Guia do desenvolvedor do Amazon Route 53.

    1. Escolha Criar zona hospedada.

    2. Insira o domínio pai, por exemplo auth.example.com, do seu domínio personalizado, por exemplo myapp.auth.example.com, da lista Domain Name (Nome do domínio).

    3. Insira uma Descrição para a sua zona hospedada.

    4. Selecione um Type (Tipo) de zona hospedada de Public hosted zone (Zona hospedada pública) para permitir que clientes públicos resolvam seu domínio personalizado. Não há compatibilidade com a seleção de Private hosted zone (Zona hospedada privada).

    5. Aplique Etiquetas como desejar.

    6. Escolha Criar zona hospedada.

      nota

      Também é possível criar uma nova zona hospedada para o domínio personalizado com um conjunto de delegação na zona hospedada principal que direciona consultas para a zona hospedada do subdomínio. Caso contrário, crie um registro A. Esse método oferece mais flexibilidade e segurança com suas zonas hospedadas. Para mais informações, consulte Creating a subdomain for a domain hosted through Amazon Route 53 (Criar um subdomínio para um domínio hospedado por meio do Amazon Route 53).

  3. Na página Hosted Zones (Zonas hospedadas), escolha o nome da sua zona hospedada.

  4. Adicione um registro DNS ao domínio pai do seu domínio personalizado, caso ainda não tenha um. Crie um registro DNS para o domínio pai com as propriedades a seguir:

    • Nome do registro: deixe em branco.

    • Tipo de registro: A.

    • Alias: não ative.

    • Valor: insira o valor desejado. Esse registro deve ser resolvido como algo, mas o valor do registro não importa para o Amazon Cognito.

    • TTL: defina como seu TTL preferido ou deixe o padrão.

    • Política de roteamento: escolha roteamento simples.

  5. Escolha Criar registros. Veja a seguir um exemplo de registro para o domínio example.com:

    example.com. 60 IN A 198.51.100.1

    nota

    O Amazon Cognito verifica que há um registro DNS para o domínio pai do seu domínio personalizado para proteger contra o sequestro acidental de domínios de produção. Se você não tiver um registro DNS para o domínio pai, o Amazon Cognito retornará um erro quando você tentar definir o domínio personalizado. Um registro de Início de autoridade (SOA) não é um registro DNS suficiente para fins de verificação do domínio pai.

  6. Adicione outro registro DNS para seu domínio personalizado com as seguintes propriedades:

    • Nome do registro: prefixo do domínio personalizado, por exemplo, auth para criar um registro para auth.example.com.

    • Tipo de registro: A.

    • Alias: ative.

    • Rotear tráfego para: escolha Alias para distribuição do CloudFront. Insira o Destino do alias que você registrou anteriormente, por exemplo, 123example.cloudfront.net.

    • Política de roteamento: escolha roteamento simples.

  7. Escolha Criar registros.

    nota

    A propagação de seus novos registros para todos os servidores de DNS do Route 53 pode levar cerca de 60 segundos. É possível utilizar o método da API GetChange do Route 53 para verificar se as alterações foram propagadas.

Etapa 3: verificar a página de acesso

  • Verifique se a página de login está disponível no seu domínio personalizado.

    Faça login com o domínio e o subdomínio personalizados inserindo esse endereço no navegador. Este é um exemplo de URL de um domínio personalizado example.com com o subdomínio auth:

    https://myapp.auth.example.com/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>

Como alterar o certificado SSL do seu domínio personalizado

Quando necessário, você poderá usar o Amazon Cognito para alterar o certificado aplicado ao seu domínio personalizado.

Geralmente, isso é desnecessário ao ser seguida a rotina de renovação do certificado com o ACM. Quando você renovar seu certificado existente no ACM, o ARN do certificado permanecerá o mesmo, e seu domínio personalizado usará o novo certificado automaticamente.

No entanto, se você substituir o certificado existente por um novo, o ACM dará ao novo certificado um novo ARN. Para aplicar o novo certificado ao seu domínio personalizado, você deve fornecer esse ARN ao Amazon Cognito.

Depois de fornecer o novo certificado, o Amazon Cognito precisará de até uma hora para distribuí-lo ao seu domínio personalizado.

Antes de começar

Antes de alterar seu certificado no Amazon Cognito, você deve adicionar o certificado ao ACM. Para obter mais informações, consulte Conceitos básicos no Guia do usuário do AWS Certificate Manager.

Ao adicionar seu certificado ao ACM, você deve escolher Leste dos EUA (Norte da Virgínia) como região da AWS.

É possível alterar seu certificado usando a API ou o console do Amazon Cognito.

Console de gerenciamento da AWS
Para renovar um certificado no console do Amazon Cognito:
  1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon Cognito em https://console.aws.amazon.com/cognito/home.

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

  3. Escolha o grupo de usuários para o qual deseja atualizar o certificado.

  4. Clique no menu Domínio.

  5. Escolha Actions (Ações), Edit ACM certificate (Editar certificado do ACM).

  6. Selecione o novo certificado que deseja associar ao seu domínio personalizado.

  7. Escolha Salvar alterações.

API
Para renovar um certificado (API do Amazon Cognito)