Como usar provedores de identidade OIDC com um grupo de usuários - 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á.

Como usar provedores de identidade OIDC com um grupo de usuários

Os usuários podem entrar no seu aplicativo usando suas contas existentes dos provedores de identidade do OpenID Connect (OIDC) (). IdPs Com os provedores do OIDC, os usuários de sistemas independentes de login único podem fornecer as credenciais existentes enquanto a aplicação recebe tokens do OIDC no formato compartilhado dos grupos de usuários. Para configurar um IdP OIDC, configure seu IdP para gerenciar o grupo de usuários como a RP e configure sua aplicação para gerenciar o grupo de usuários como o IdP. O Amazon Cognito serve como uma etapa intermediária entre vários OIDC IdPs e seus aplicativos. O grupo de usuários aplica regras de mapeamento de atributos às declarações nos tokens de ID e acesso que o provedor transmite diretamente para o grupo de usuários. O Amazon Cognito então emite novos tokens com base nos atributos de usuário mapeados e em quaisquer ajustes adicionais que você tenha feito no fluxo de autenticação com acionadores do Lambda.

Os usuários que fazem login com um IdP do OIDC não precisam fornecer novas credenciais ou informações para acessar a aplicação de grupo de usuários. Sua aplicação pode redirecioná-los silenciosamente para seu IdP para login, com um grupo de usuários como uma ferramenta em segundo plano que padroniza o formato do token da aplicação. Para saber mais sobre o redirecionamento de IdP, consulte Autorizar endpoint.

Assim como com outros provedores de identidade de terceiros, você deve registrar a aplicação no provedor OIDC e obter informações sobre a aplicação IdP que deseja conectar ao seu grupo de usuários. Um IdP de grupo de usuários OIDC exige um ID do cliente, segredo do cliente, escopos que você deseja solicitar e informações sobre endpoints de serviços do provedor. Seu grupo de usuários pode descobrir os endpoints OIDC do provedor a partir de um endpoint de descoberta. Ou você pode inseri-los manualmente. Você também deve examinar os tokens de ID do provedor e criar mapeamentos de atributos entre o IdP e os atributos em seu grupo de usuários.

Fluxo de autenticação do IdP do grupo de usuários do OIDC

Consulte Fluxo de autenticação do IdP do grupo de usuários do OIDC para obter mais detalhes sobre esse fluxo de autenticação.

nota

O login por meio de um terceiro (federação) está disponível em grupos de usuários do Amazon Cognito. Esse recurso é independente da federação OIDC com bancos de identidades do Amazon Cognito.

Você pode adicionar um IdP OIDC ao seu grupo de usuários no Console de gerenciamento da AWS, por meio do ou com o método da AWS CLI API do grupo de usuários. CreateIdentityProvider

Pré-requisitos

Antes de começar, você precisará fazer o seguinte:

  • Um grupo de usuários com um cliente da aplicação e um domínio do grupo de usuários. Para obter mais informações, consulte Criar um grupo de usuários.

  • Um IdP OIDC com a seguinte configuração:

    • Comporta a autenticação de cliente client_secret_post. O Amazon Cognito não verifica a declaração token_endpoint_auth_methods_supported no endpoint de descoberta OIDC para seu IdP. O Amazon Cognito não comporta a autenticação de cliente client_secret_basic. Para obter mais informações sobre a autenticação do cliente, consulte Autenticação de cliente na documentação do OpenID Connect.

    • Só usa HTTPS para endpoints OIDC, como openid_configuration, userInfo e jwks_uri.

    • Só usa as portas TCP 80 e 443 para endpoints OIDC.

    • Só assina tokens de ID com algoritmos HMAC-SHA, ECDSA ou RSA.

    • Publica uma reivindicação de ID de chave kid no jwks_uri e inclui uma reivindicação kid nos respectivos tokens.

    • Apresenta uma chave pública não expirada com uma cadeia de confiança de CA raiz válida.

Registrar uma aplicação com um IdP OIDC

Antes de adicionar um IdP OIDC à configuração do grupo de usuários e atribuí-lo aos clientes da aplicação, você configura uma aplicação cliente do OIDC no IdP. Seu grupo de usuários é a aplicação de parte confiável que gerenciará a autenticação com o IdP.

Para registrar com um IdP OIDC
  1. Crie uma conta de desenvolvedor com o IdP OIDC.

    Links para o OIDC IdPs
    IdP OIDC Como instalar URL de descoberta OIDC
    Salesforce

    Salesforce as an OpenID Connect Identity Provider

    https://MyDomainName.my.salesforce.com/.well-known/openid-configuration

    OneLogin Connect an OIDC enabled app

    https://your-domain.onelogin.com/oidc/2/.well-known/openid-configuration

    JumpCloud SSO with OIDC

    https://oauth.id.jumpcloud.com/.well-known/openid-configuration

    Okta

    Instale um provedor de identidade Okta

    https://Your Okta subdomain.okta.com/.well-known/openid-configuration

    Microsoft Entra ID

    OpenID Connect on the Microsoft identity platform

    https://login.microsoftonline.com/{tenant}/v2.0

    Os valores de tenant podem incluir um ID de locatário, common, organizations ou consumers.

  2. Inscreva o URL do domínio do grupo de usuários com o endpoint /oauth2/idpresponse com o IdP OIDC. Isso garante que o IdP OIDC o aceite posteriormente no Amazon Cognito quando autenticar os usuários.

    https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
  3. Selecione os escopos que você deseja que seu diretório de usuários compartilhe com o grupo de usuários. O escopo openid é necessário para que o OIDC ofereça qualquer IdPs informação do usuário. O escopo email é necessário para conceder acesso às declarações email e email_verified. Escopos adicionais na especificação do OIDC são profile para todos os atributos do usuário e phone para phone_number e phone_number_verified.

  4. O IdP OIDC fornece um ID e uma chave secreta do cliente. Anote esses valores e adicione-os à configuração do IdP OIDC que você adicionará posteriormente ao grupo de usuários.

Exemplo: usar o Salesforce como um IdP OIDC com o grupo de usuários

Você usa um IdP OIDC quando deseja estabelecer confiança entre um IdP compatível com OIDC, como o Salesforce e seu grupo de usuários.

  1. Crie uma conta no site de desenvolvedores do Salesforce.

  2. Faça login na conta de desenvolvedor que você criou na etapa anterior.

  3. Na página do Salesforce, execute um dos seguintes procedimentos:

    • Se você estiver usando o Lightning Experience, escolha o ícone de engrenagem da configuração e, depois, Setup Home (Página inicial de configuração).

    • Se você estiver usando o Salesforce Classic e você visualizar Setup (Configuração) no cabeçalho da interface do usuário, selecione-o.

    • Se você estiver usando o Salesforce Classic e você não visualizar Setup (Configuração) no cabeçalho, selecione seu nome na barra de navegação superior e selecione Setup (Configuração) na lista suspensa.

  4. Na barra de navegação à esquerda, escolha Company Settings (Configurações da empresa).

  5. Na barra de navegação, escolha Domain (Domínio), insira um domínio e escolha Create (Criar).

  6. Na barra de navegação à esquerda, em Platform Tools (Ferramentas de plataforma), escolha Apps (Aplicações).

  7. Escolha App Manager (Gerenciador de aplicativos).

    1. Escolha New connected app (Nova aplicação conectada).

    2. Preencha os campos necessários.

      Em Start URL (URL de início), insira um URL no endpoint /authorize para o domínio do grupo de usuários que faz login em seu IdP Salesforce. Quando seus usuários acessam sua aplicação conectada, o Salesforce os direciona para esse URL para concluir o login. Em seguida, o Salesforce redireciona os usuários para o URL de retorno de chamada que você associou ao cliente de aplicação.

      https://mydomain.auth.us-east-1.amazoncognito.com/authorize?response_type=code&client_id=<your_client_id>&redirect_uri=https://www.example.com&identity_provider=CorpSalesforce
    3. Ative OAuth as configurações e insira a URL do /oauth2/idpresponse endpoint do seu domínio do grupo de usuários em URL de retorno de chamada. Esse é o URL em que o Salesforce emite o código de autorização que o Amazon Cognito troca por um token. OAuth

      https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
  8. Selecione seus escopos. Você deve incluir o escopo openid. Para conceder acesso às declarações email e email_verified, adicione o escopo email. Escopos separados por espaços.

  9. Escolha Criar.

    No Salesforce, o ID do cliente é chamado de Consumer Key (Chave do consumidor) e a chave secreta do cliente é uma Consumer Secret (Chave secreta do consumidor). Anote o ID e a chave secreta do cliente. Você poderá usá-los na próxima seção.

Adicionar um IdP OIDC ao seu grupo de usuários

Após configurar o IdP, você pode configurar o grupo de usuários para lidar com solicitações de autenticação com um IdP OIDC.

Amazon Cognito console
Adicionar um IdP OIDC no console
  1. Acesse o console do Amazon Cognito. Se solicitado, insira suas credenciais da AWS .

  2. Escolha User Pools (Grupos de usuários) no menu de navegação.

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

  4. Clique no menu Provedores sociais e externos e selecione Adicionar um provedor de identidade.

  5. Escolha um IdP OpenID Connect.

  6. Insira um Nome do provedor exclusivo.

  7. Insira o ID do cliente do IdP. Esse é o ID do cliente da aplicação que você criou no IdP OIDC. O ID do cliente fornecido deve ser um provedor OIDC que você configurou com um URL de retorno de chamada de https://[your user pool domain]/oauth2/idpresponse.

  8. Insira o Segredo do cliente do IdP. Esse deve ser o segredo do cliente para o mesmo cliente da aplicação da etapa anterior.

  9. Insira os Authorized scopes (Escopos autorizados) para esse provedor. Os escopos definem quais grupos de atributos do usuário (como name e email) sua aplicação solicitará ao seu provedor. Os escopos devem ser separados por espaços, seguindo a especificação OAuth2.0.

    O IdP pode solicitar que os usuários consintam em fornecer esses atributos à aplicação quando fizerem login.

  10. Escolha um método de solicitação de atributo. IdPspode exigir que as solicitações para seus userInfo endpoints sejam formatadas como ou. GET POST O endpoint userInfo do Amazon Cognito exige solicitações HTTP GET, por exemplo.

  11. Selecione um Método de configuração para definir como o grupo de usuários determinará o caminho para os principais endpoints de federação OIDC no IdP. Normalmente, IdPs hospeda um /well-known/openid-configuration endpoint em um URL base do emissor. Se esse for o caso do seu provedor, a opção Preenchimento automático por meio do URL do emissor solicitará esse URL base, tentará acessar o caminho /well-known/openid-configuration com base nele e lerá os endpoints listados. Você pode ter caminhos de endpoint não típicos ou deseja encaminhar solicitações para um ou mais endpoints por meio de um proxy alternativo. Nesse caso, selecione Entrada manual e especifique caminhos para os endpoints authorization, token, userInfo e jwks_uri.

    nota

    O URL deve começar com https:// e não deve terminar com uma barra /. Somente os números de porta 443 e 80 podem ser usados com esse URL. Por exemplo, Salesforce usa este URL:

    https://login.salesforce.com

    Se você escolher preenchimento automático, o documento de descoberta deverá usar HTTPS para os seguintes valores: authorization_endpoint, token_endpoint, userinfo_endpoint e jwks_uri. Caso contrário, o login falhará.

  12. Configure as regras de mapeamento de atributos em Mapear atributos entre o provedor OpenID Connect e o grupo de usuários. Atributo do grupo de usuários é o atributo de destino no perfil de usuário do Amazon Cognito e o atributo OpenID Connect é o atributo de origem que você deseja que o Amazon Cognito encontre em uma declaração de token de ID ou resposta userInfo. O Amazon Cognito mapeia automaticamente a declaração OIDC sub para username no perfil do usuário de destino.

    Para obter mais informações, consulte Mapeamento de atributos de IdP para perfis e tokens.

  13. Selecione Adicionar provedor de identidade.

  14. No menu Clientes da aplicação, selecione um cliente da aplicação na lista. Navegue até a guia Páginas de login e, em Configuração gerenciada de páginas de login, clique em Editar. Localize provedores de identidades e adicione o novo IdP OIDC.

  15. Escolha Salvar alterações.

API/CLI

Veja a configuração do OIDC no exemplo dois em. CreateIdentityProvider Você pode modificar essa sintaxe e usá-la como o corpo da solicitação de CreateIdentityProviderUpdateIdentityProvider, ou o arquivo --cli-input-json de entrada para create-identity-provider.

Testar a configuração de IdP OIDC

Na aplicação, você deve invocar um navegador no cliente do usuário para que ele possa fazer login com o provedor OIDC. Teste o login com seu provedor após concluir os procedimentos de configuração nas seções anteriores. O exemplo de URL a seguir carrega a página de login do grupo de usuários com um domínio de prefixo.

https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com

Esse link é a página para a qual o Amazon Cognito direcionará você ao acessar o menu Clientes da aplicação, selecionar um cliente da aplicação, navegar até a guia Páginas de login e selecionar Visualizar página de login. Para obter mais informações sobre domínios do grupo de usuários, consulte Como configurar um domínio de grupo de usuários. Para obter mais informações sobre clientes de aplicativos, incluindo cliente IDs e retorno de chamada URLs, consulteConfigurações específicas da aplicação com clientes de aplicação.

O link de exemplo a seguir configura o redirecionamento silencioso para o provedor MyOIDCIdP por meio do Autorizar endpoint com um parâmetro de consulta identity_provider. Esse URL ignora o login interativo do grupo de usuários com login gerenciado e leva diretamente à página de login do IdP.

https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?identity_provider=MyOIDCIdP&response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com