

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
<a name="cognito-user-pools-oidc-idp"></a>

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](cognito-user-pools-working-with-lambda-triggers.md#lambda-triggers-for-federated-users).

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](authorization-endpoint.md).

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\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/flow-cup-oidc-endpoints.png)


Consulte [Fluxo de autenticação do IdP do grupo de usuários do OIDC](cognito-user-pools-oidc-flow.md) 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](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)

**Topics**
+ [Pré-requisitos](#cognito-user-pools-oidc-idp-prerequisites)
+ [Registrar uma aplicação com um IdP OIDC](#cognito-user-pools-oidc-idp-step-1)
+ [Adicionar um IdP OIDC ao seu grupo de usuários](#cognito-user-pools-oidc-idp-step-2)
+ [Testar a configuração de IdP OIDC](#cognito-user-pools-oidc-idp-step-3)
+ [Fluxo de autenticação do IdP do grupo de usuários do OIDC](cognito-user-pools-oidc-flow.md)

## Pré-requisitos
<a name="cognito-user-pools-oidc-idp-prerequisites"></a>

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](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).
+ 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](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication) 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
<a name="cognito-user-pools-oidc-idp-step-1"></a>

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**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/cognito-user-pools-oidc-idp.html)

1. 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
   ```

1. Selecione os [escopos](cognito-user-pools-define-resource-servers.md#cognito-user-pools-define-resource-servers-about-scopes) 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](https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims) `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`.

1. 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](https://developer.salesforce.com/signup) no site de desenvolvedores do Salesforce.

1. [Faça login na conta de desenvolvedor que você criou na etapa anterior.](https://developer.salesforce.com)

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

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

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

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

1. Escolha **App Manager (Gerenciador de aplicativos)**.

1. 

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

   1. 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
      ```

   1. 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
      ```

1. Selecione seus [escopos](https://openid.net/specs/openid-connect-basic-1_0.html#Scopes). Você deve incluir o escopo **openid**. Para conceder acesso às [declarações](https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims) **email** e **email\$1verified**, adicione o escopo **email**. Escopos separados por espaços.

1. 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
<a name="cognito-user-pools-oidc-idp-step-2"></a>

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](https://console.aws.amazon.com/cognito/home). Se solicitado, insira suas credenciais da AWS .

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

1. Escolha um grupo de usuários existente na lista ou [crie um grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

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

1. Escolha um IdP **OpenID Connect**.

1. Insira um **Nome do provedor** exclusivo.

1. 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`.

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

1. <a name="cognito-user-pools-oidc-step-2-substep-9"></a>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](https://tools.ietf.org/html/rfc6749#section-3.3).

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

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

1. 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á.

1. 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](cognito-user-pools-specifying-attribute-mapping.md).

1. Selecione **Adicionar provedor de identidade**.

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

1. Escolha **Salvar alterações**.

------
#### [ API/CLI ]

Veja a configuração do OIDC no exemplo dois em. [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html#API_CreateIdentityProvider_Example_2) Você pode modificar essa sintaxe e usá-la como o corpo da `CreateIdentityProvider` solicitação ou `UpdateIdentityProvider` o arquivo `--cli-input-json` de entrada para [create-identity-provider](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-identity-provider.html).

------

## Testar a configuração de IdP OIDC
<a name="cognito-user-pools-oidc-idp-step-3"></a>

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](cognito-user-pools-assign-domain.md). Para obter mais informações sobre clientes de aplicativos, incluindo cliente IDs e retorno de chamada URLs, consulte[Configurações específicas da aplicação com clientes de aplicação](user-pool-settings-client-apps.md).

O link de exemplo a seguir configura o redirecionamento silencioso para o provedor `MyOIDCIdP` por meio do [Autorizar endpoint](authorization-endpoint.md) 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
```