

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

# Aplicação de exemplo para bancos de identidades
<a name="getting-started-identity-pools-application"></a>

O caso de uso mais comum dos grupos de identidade do Amazon Cognito é federar usuários de vários sistemas de login e entregar credenciais temporárias de acesso limitado AWS diretamente ao cliente. Isso elimina a necessidade de criar um agente de credenciais para obter permissões para acessar seus AWS recursos. Por exemplo, talvez seja necessário permitir que os usuários façam login com suas contas de rede social e acessem os ativos da aplicação do Amazon S3 para seu aplicativo móvel. Os bancos de identidades também fornecem credenciais aos usuários que fazem login com grupos de usuários.

Neste tutorial, você criará um aplicativo web em que poderá obter credenciais temporárias autenticadas e de convidado nos [fluxos de autenticação](authentication-flow.md) avançados e básicos com provedores de identidade compatíveis (IdPs) em grupos de identidades. Se você já tem experiência em desenvolvimento web, baixe o aplicativo de exemplo em GitHub.

[Baixe o aplicativo de exemplo em GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/cognito/scenarios/identity_pools_example_demo/web)

Esta aplicação de exemplo demonstra os seguintes recursos dos bancos de identidades do Amazon Cognito:

**Fluxos de autenticação em bancos de identidades**  
+ Fluxo de autenticação aprimorado com detalhamento das solicitações de API
+ Fluxo de autenticação básico com detalhamento das solicitações de API

**Implementação do acesso de convidado (não autenticado)**  
+ Forneça AWS service (Serviço da AWS) acesso limitado sem exigir login

**Integração com provedores de identidades compatíveis**  
+ Social IdPs (Facebook, Amazon, Twitter, Apple e Google) para acesso do consumidor
+ Enterprise IdPs (por meio do OpenID Connect ou SAML) para usuários corporativos
+ Grupos de usuários do Amazon Cognito

**AWS gerenciamento de credenciais**  
+ Troca de tokens do provedor de identidades por credenciais temporárias da AWS 
+ Usando credenciais temporárias para acessar AWS serviços com segurança

Após configurar a aplicação no servidor web de desenvolvimento e acessá-la em um navegador, você verá as opções a seguir.

![\[Captura de tela da interface web da aplicação de demonstração do banco de identidades do Amazon Cognito mostrando a página principal com opções de método de autenticação e seções de demonstração interativas.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/amazon-cognito-identity-pool-demo-app.png)


**Topics**
+ [Pré-requisitos](#demo-prerequisites)
+ [Configuração do provedor de autenticação](#demo-authentication-provider-setup)
+ [Implantar a aplicação de demonstração](#demo-deploy-application)
+ [Explorar os métodos de autenticação no banco de identidades](#explore-authentication-methods-in-identity-pools-application)
+ [Próximas etapas](#next-steps)

## Pré-requisitos
<a name="demo-prerequisites"></a>

Antes de começar, você precisará configurar os recursos a seguir.
+ Uma AWS conta com acesso ao Amazon Cognito. Se você não tiver uma AWS conta, siga as instruções em[Começando com AWS](cognito-getting-started-account-iam.md).
+ Python 3.8 ou posterior instalado na sua máquina de desenvolvimento.
+ GitHub acesso.
+ AWS credenciais configuradas com permissões para fazer solicitações autenticadas ao Amazon Cognito. APIs Essas credenciais são obrigatórias para a [autenticação do desenvolvedor](authentication-flow.md#authentication-flow-developer).

Para obter mais informações sobre a implementação de AWS credenciais e federação de grupos de identidades em seu SDK específico, consulte. [Como obter credenciais](getting-credentials.md)

## Configuração do provedor de autenticação
<a name="demo-authentication-provider-setup"></a>

Para obter melhores resultados com esse aplicativo, configure e integre um ou mais provedores de identidade terceirizados (IdPs) ou grupos de usuários do Amazon Cognito ao seu pool de identidade do Amazon Cognito. Após concluir os pré-requisitos e antes de executar essa aplicação de demonstração, escolha quais provedores de identidades configurar. O [console do Amazon Cognito](https://console.aws.amazon.com/cognito/v2/identity/identity-pools) orienta você no processo de configuração de bancos de identidades e provedores.

**Grupos de usuários do Amazon Cognito**  
+ [Autenticação com grupos de usuários do Amazon Cognito](authentication.md)
+ [Configurações específicas da aplicação com clientes de aplicação](user-pool-settings-client-apps.md)

**Provedores de identidade social**  
+ Google: [Configurar o Google como um IdP do banco de identidades](google.md)
+ Facebook: [Configurar o Facebook como um IdP de bancos de identidades](facebook.md)
+ Amazon: [Configurar o Login with Amazon como um IdP de bancos de identidades](amazon.md)

**Provedores OpenID Connect (OIDC)**  
+ [Configurar um provedor OIDC como um IdP do banco de identidades](open-id.md)

**Provedores de SAML**  
+ [Configurar um provedor SAML como um IdP do banco de identidades](saml-identity-provider.md)

**nota**  
Para essa aplicação de demonstração, não é necessário configurar todos os provedores de identidades compatíveis. Você pode começar com um que corresponda ao seu caso de uso. Cada link fornece instruções detalhadas de configuração.

## Implantar a aplicação de demonstração
<a name="demo-deploy-application"></a>

### Clone o repositório
<a name="demo-step-1-clone-repository"></a>

1. Abra uma janela do terminal.

1. Clone o repositório `aws-doc-sdk-examples` ou recupere [esta pasta no repositório](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/cognito/scenarios/identity_pools_example_demo/web).

   ```
   git clone https://github.com/awsdocs/aws-doc-sdk-examples.git
   ```

1. Navegue até o diretório de projeto do .

   ```
   cd python/example_code/cognito/scenarios/identity_pools_example_demo/web
   ```

### Criar um banco de identidades do
<a name="demo-step-2-create-identity-pool"></a>

Para criar um banco de identidades no Amazon Cognito para sua aplicação, siga as instruções em [Visão geral do console de bancos de identidades](identity-pools.md).

**Como configurar um banco de identidades para a aplicação de demonstração**

1. Abra o [console do Amazon Cognito](https://console.aws.amazon.com/cognito/home).

1. No menu de navegação à esquerda, selecione **Grupos de identidades**. Escolha um banco de identidades existente ou crie um.

1. Em **Acesso de usuário**, habilite **Acesso autenticado** e **Acesso de convidado**. Configure um [perfil do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) novo ou existente e [atribua a ele as permissões](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html) que você deseja conceder a cada tipo de usuário.

1. Em **Acesso de usuário**, configure todos os provedores de identidades que deseja configurar.

1. Em **Propriedades do grupo de identidades**, habilite **Autenticação básica (clássica)**.

1. Mantenha o navegador aberto no console do banco de identidades. Você usará o ID do banco de identidades e outras informações de configuração na configuração da sua aplicação.

### Configurar e executar a aplicação
<a name="demo-step-3-configure-run-application"></a>

As etapas a seguir guiarão você na configuração inicial da sua aplicação de demonstração.

**Como configurar a aplicação de demonstração**

1. Abra uma linha de comando em `python/example_code/cognito/scenarios/identity_pools_example_demo/web` em seu clone `aws-doc-sdk-examples`.

1. Crie um arquivo `.env` copiando o [arquivo de ambiente de exemplo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/python/example_code/cognito/scenarios/identity_pools_example_demo/web/.env.example).

   ```
   cp .env.example .env
   ```

1. Abra o arquivo `.env` em um editor de textos. Substitua os valores de exemplo no arquivo pelos seus próprios valores de configuração.

1. Instale as dependências de backend.

   ```
   pip install -r requirements.txt
   ```

1. Inicie o servidor de backend:

   ```
   cd backend 
   python oauth_server.py
   ```

1. Abra uma nova janela de terminal, navegue até o diretório do projeto e inicie o servidor de frontend:

   ```
   cd frontend
   python -m http.server 8001
   ```

1. Abra seu navegador e acesse a aplicação em [http://localhost:8001](http://localhost:8001). Seu navegador exibirá a interface da aplicação de demonstração, pronta para testar a autenticação de bancos de identidades.

## Explorar os métodos de autenticação no banco de identidades
<a name="explore-authentication-methods-in-identity-pools-application"></a>

Esta seção orienta você pelos fluxos de autenticação básica e aprimorada usando a aplicação de demonstração de bancos de identidades do Amazon Cognito. Com esta demonstração, você aprenderá como os grupos de identidades funcionam com vários provedores de identidade para fornecer AWS credenciais temporárias aos usuários do seu aplicativo.

Na seção **Demonstração interativa** da aplicação de exemplo, você primeiro escolherá entre dois tipos de acesso compatíveis com bancos de identidades.

**[Acesso não autenticado (convidado)](#unauthenticated-access)**  
Forneça AWS credenciais aos usuários que ainda não se autenticaram.

**Acesso autenticado**  
Troque tokens do provedor de identidade por AWS credenciais com um escopo completo de permissões disponíveis. Escolha um provedor de identidades dentre aqueles que você configurou no arquivo `.env`.

## Acesso não autenticado (convidado)
<a name="unauthenticated-access"></a>

Esta etapa demonstra como obter AWS credenciais temporárias para usuários não autenticados (convidados) por meio do recurso de acesso de convidados do seu grupo de identidades. Na aplicação de demonstração, você testará os fluxos avançado e básico para ver como os bancos de identidades emitem credenciais sem exigir o login do usuário. O acesso de convidado usa a mesma sequência de API do acesso autenticado, mas sem fornecer tokens de provedor de identidade (como OAuth tokens do Google, Facebook ou declarações SAML de provedores corporativos).

Continue a leitura se quiser informações sobre como fornecer acesso limitado à AWS para usuários sem exigir autenticação. Depois de implementar o acesso de convidado, você aprenderá a fornecer AWS credenciais com segurança a usuários anônimos e a entender as diferenças entre os dois fluxos de autenticação.

**Importante**  
O acesso não autenticado pode emitir credenciais para qualquer pessoa com acesso à Internet, por isso é melhor usado para AWS recursos que exigem segurança mínima, como ativos públicos APIs e gráficos. Antes de prosseguir com essa etapa, verifique se você configurou o banco de identidades com o acesso de convidado habilitado e garanta que as políticas do IAM adequadas estejam em vigor para limitar as permissões.

------
#### [ Guest access with enhanced flow ]

O fluxo aprimorado é uma abordagem simplificada para obter credenciais da AWS para usuários não autenticados com duas solicitações de API.

**Como testar o acesso de convidado com o fluxo aprimorado**

1. Na aplicação de demonstração, navegue até a seção **Demonstração interativa**.

1. Selecione a guia **Acesso de convidado**.

1. Selecione a guia **Fluxo aprimorado**.

1. Clique em **Testar acesso de convidado**.

1. O aplicativo obtém AWS credenciais temporárias de seus grupos de identidades sem solicitações adicionais de autenticação.

1. Após a autenticação bem-sucedida, você verá a interface da web exibindo o painel **Resultados** e terá duas opções para explorá-lo:

   1. Botão **Exibir somente credenciais**: escolha esse botão se quiser ver diretamente AWS as credenciais temporárias geradas sem os detalhes do fluxo da API. 

      ```
      {
        "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "Credentials": {
          "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
          "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
          "Expiration": "2025-08-07T00:58:21-07:00"
        }
      }
      ```

   1. **Exibir botão detalhado do fluxo da API**: escolha esse botão se quiser ver as solicitações da step-by-step API. 
      + Solicitação de API `GetId()` com seu `identityPoolId`. Não são necessários tokens de autenticação para acesso de convidado.

        ```
        {
          "IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
        }
        ```

        Se for válido, ele encontrará ou criará e retornará o `IdentityID` do usuário. Um exemplo de resposta é semelhante a:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
        }
        ```
      + `GetCredentialsForIdentity()` com o `identityPoolId` retornado.

        ```
        POST GetCredentialsForIdentity
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
        }
        ```

        Cognito valida o acesso de convidados, assume a função não autenticada internamente e retorna uma credencial temporária da AWS. AWS STS(Não há autenticação do IAM nessa chamada; a confiança de função deve permitir `cognito-identity-amazonzaws.com`.)

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
          "Credentials": {
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
            "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
            "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
            "Expiration": "2025-08-07T00:58:21-07:00"
          }
        }
        ```

------
#### [ Guest access with basic flow ]

O fluxo básico fornece controle granular sobre o processo de autenticação com solicitações de API separadas para recuperação de identidade e geração de credenciais.

**Como testar o acesso de convidado com o fluxo básico**

1. Na aplicação de demonstração, navegue até a seção **Demonstração interativa**.

1. Selecione a guia **Acesso de convidado**.

1. Selecione a guia **Fluxo básico**.

1. Clique em **Testar acesso de convidado**.

1. O aplicativo obtém AWS credenciais temporárias de seus grupos de identidades sem solicitações adicionais de autenticação.

1. Após a autenticação bem-sucedida, você verá a interface da web exibindo o painel **Resultados** e terá duas opções para explorá-lo.

   1. Botão **Exibir somente credenciais**: escolha esse botão se quiser ver diretamente AWS as credenciais temporárias geradas sem os detalhes do fluxo da API. 

      ```
      {
        "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
        "Credentials": {
          "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
          "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
          "Expiration": "2025-08-12T13:36:17-07:00"
        }
      }
      ```

   1. **Exibir botão detalhado do fluxo da API**: escolha esse botão se quiser ver as solicitações da step-by-step API. 
      +  Solicitação de API `GetId()` com o ID do banco de identidades. Não são necessários tokens de autenticação para acesso de convidado.

        ```
        POST GetId
        {
          "IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
        }
        ```

        Se for válido, ele encontrará ou criará e retornará o `IdentityID` do usuário. Um exemplo de resposta é semelhante a:

        ```
        {
           "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
        }
        ```
      +  `GetOpenIdToken()` com o `IdentityID` retornado e o mesmo mapa `Logins`.

        ```
        POST GetOpenIdToken
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
        }
        ```

        Resposta:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
          "Token": "eyJraWQiOiJFWAMPLE......"
        }
        ```

        **O que acontece nessa etapa:** o Amazon Cognito emite um token de identidade web do OpenID Connect de curta duração, proveniente de cognito-identity.amazonaws.com, que representa esse `IdentityId`. O token inclui declarações do OIDC que AWS STS avaliam, incluindo aud (seu ID de grupo de identidade) e amr (autenticado ou não autenticado). A política de confiança do seu perfil do IAM deve exigir essas declarações.
      +  `AssumeRoleWithWebIdentity()`- Seu aplicativo liga AWS STS diretamente para trocar o token OpenID do Amazon Cognito por credenciais temporárias AWS 

        ```
        POST sts:AssumeRoleWithWebIdentity
        {
          "RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolUnauth_Role",
          "WebIdentityToken": "eyJraWQiOiJFWAMPLE......"
        }
        ```

        Resposta:

        ```
        {
          "Credentials": {
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
            "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
            "SessionToken": "FwoGZXIvYXdzEEXAMPLE......"
          }
        }
        ```

        **O que acontece nessa etapa:** após a validação: retorna as credenciais temporárias da AWS 

------

### Usar as credenciais temporárias
<a name="use-temporary-credentials"></a>

Essas credenciais temporárias funcionam como AWS credenciais padrão, mas com permissões limitadas definidas pela função não autenticada do IAM do seu grupo de identidades. Você pode usá-los com qualquer AWS SDK ou AWS CLI. Para obter mais informações sobre a configuração AWS SDKs com credenciais, consulte [Provedores de credenciais padronizados](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html) no Guia de referência de ferramentas AWS SDKs e ferramentas.

Os exemplos abaixo não constituem uma lista completa, mas mostram maneiras comuns pelas quais o recurso de convidado de um banco de identidades pode melhorar a experiência do usuário.

#### Conteúdo público somente para leitura
<a name="public-content"></a>

Os exemplos a seguir configuram provedores de credenciais para acesso limitado ao Amazon S3 como usuário convidado.

------
#### [ Python ]

```
# Example: Using credentials with boto3
import boto3

# Configure client with temporary credentials
s3_client = boto3.client(
    's3',
    aws_access_key_id='AKIAIOSFODNN7EXAMPLE',
    aws_secret_access_key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
    aws_session_token='IQoJb3JpZ2luX2VjEEXAMPLE......'
)

# Make API requests within IAM role permissions
response = s3_client.list_objects_v2(Bucket='my-public-bucket')

# Access public content
for obj in response.get('Contents', []):
    print(f"File: {obj['Key']}, Size: {obj['Size']} bytes")
```

------
#### [ JavaScript ]

```
// Example: Accessing public content
import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3";

const s3Client = new S3Client({
    region: "us-east-1",
    credentials: {
        accessKeyId: 'AKIAIOSFODNN7EXAMPLE',
        secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
        sessionToken: 'IQoJb3JpZ2luX2VjEEXAMPLE......'
    }
});

// Access public images or documents
const response = await s3Client.send(new GetObjectCommand({
    Bucket: 'my-public-content',
    Key: 'product-catalog.pdf'
}));
```

------

### Características “Try-before-login”
<a name="try-before-login"></a>

Os exemplos a seguir usam o acesso somente leitura ao Amazon DynamoDB como usuário convidado.

------
#### [ Python ]

```
# Example: Limited app functionality for trial users
import boto3

dynamodb = boto3.client(
    'dynamodb',
    aws_access_key_id='AKIAIOSFODNN7EXAMPLE',
    aws_secret_access_key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
    aws_session_token='IQoJb3JpZ2luX2VjEEXAMPLE......'
)

# Allow guest users to view sample data (limited to 5 items)
response = dynamodb.scan(TableName='SampleProducts', Limit=5)
```

------
#### [ JavaScript ]

```
// Example: Limited app functionality for trial users
import { DynamoDBClient, ScanCommand } from "@aws-sdk/client-dynamodb";

const dynamodbClient = new DynamoDBClient({
    region: "us-east-1",
    credentials: {
        accessKeyId: 'AKIAIOSFODNN7EXAMPLE',
        secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
        sessionToken: 'IQoJb3JpZ2luX2VjEEXAMPLE......'
    }
});

// Allow guest users to view sample data (limited to 5 items)
const response = await dynamodbClient.send(new ScanCommand({
    TableName: 'SampleProducts',
    Limit: 5
}));
```

------

## Autenticação do provedor de identidades social
<a name="social-identity-provider-authentication"></a>

Esta etapa explora o fluxo geral de uso de provedores de identidades sociais com bancos de identidades do Amazon Cognito. A autenticação social fornece uma experiência de login familiar e, ao mesmo tempo, mantém a segurança por meio do gerenciamento de identidades federadas. Você pode fazer login a partir de um provedor de identidade social (IdP), como Google, Facebook e Amazon, e depois trocar esse token de IdP por credenciais temporárias. AWS A integração do Twitter e da Apple também é compatível com bancos de identidades, mas não é compatível na aplicação de exemplo.

O banco de identidades em si não é um diretório de usuários. Ele não armazena senhas nem campos de perfil. Em vez disso, ela confia no externo IdPs para autenticar o usuário e se concentra em autorizar esse usuário já autenticado a ligar diretamente para os AWS serviços, vendendo credenciais para funções do IAM.

------
#### [ Social identity provider with enhanced flow ]

Esta seção mostra como você pode usar um provedor de identidades social para conectar um usuário e, usando o fluxo aprimorado, trocar o token do provedor em um banco de identidades do Amazon Cognito por credenciais temporárias para solicitar recursos da AWS .

**Usar o login social com o fluxo aprimorado na aplicação de exemplo**

1. Na aplicação de demonstração, navegue até a seção **Demonstração interativa**.

1. Selecione a guia **Acesso autenticado**.

1. Selecione a guia **Fluxo aprimorado**.

1. Escolha um provedor social compatível que você configurou, por exemplo, **Fazer login com o Google**, **Fazer login com o Facebook** ou **Fazer login com a Amazon**.

1. Faça login e concorde em compartilhar dados do usuário com a aplicação.

1. O provedor redireciona de volta para o URI de redirecionamento da aplicação.

1. O aplicativo envia o token do provedor para seu grupo de identidades e recupera credenciais temporárias AWS 

1. A aplicação exibe o painel **Resultados** na interface da web.

   Após a autenticação bem-sucedida, você verá a interface da web exibindo o painel **Resultados** e terá duas opções para explorá-lo:

   1. Botão **Exibir somente credenciais**: escolha esse botão se quiser ver diretamente AWS as credenciais temporárias geradas sem os detalhes do fluxo da API. 

      ```
      {
        "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
        "Credentials": {
          "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
          "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
          "Expiration": "2025-08-12T13:36:17-07:00"
        }
      }
      ```

   1. **Exibir botão detalhado do fluxo da API**: escolha esse botão se quiser ver as solicitações da step-by-step API. 
      +  A aplicação conecta o usuário com um IdP social e obtém o token do provedor. Os bancos de identidades aceitam estes artefatos dos provedores sociais:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/getting-started-identity-pools-application.html)

        Após a autenticação bem-sucedida com o provedor social, seu aplicativo recebe uma OAuth resposta contendo o token de acesso e outros detalhes de autenticação:

        ```
        {
           "access_token": "ya29.A0AS3H6NEXAMPLE......",
           "expires_in": 3599,
           "scope": "openid https://www.examplesocial....",
           "token_type": "Bearer",
           "id_token": "eyJhbGciOiJSUzI1NiIsEXAMPLE......"
        }
        ```
      +  Solicitação de API `GetId()` com o ID do banco de identidades e um mapa `Logins` contendo o token do provedor social.

        ```
        POST GetId
        {
          "IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
          "Logins": {
            "accounts.google.com": "eyJhbGciOiJSUzI1NiIsEXAMPLE......"
          }
        }
        ```

        Resposta:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
        }
        ```
      + `GetCredentialsForIdentity()` com o `IdentityID` retornado e o mesmo mapa `Logins`.

        ```
        POST GetCredentialsForIdentity
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
          "Logins": {
            "accounts.google.com": "eyJhbGciOiJSUzI1NiIsEXAMPLE......"
          }
        }
        ```

        Resposta:

        ```
        {
          "Credentials": {
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
            "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
            "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
            "Expiration": "2025-08-07T00:58:21-07:00"
          },
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
        }
        ```

**O que aconteceu**: o Amazon Cognito validou o token em relação ao provedor configurado, escolheu uma função do IAM com base na configuração do seu provedor e ligou AWS STS em seu nome. Seu banco de identidades então retornou as credenciais temporárias.

------
#### [ Social identity provider with basic flow ]

Esta seção mostra como você pode usar um provedor de identidade social para cadastrar um usuário e, usando o fluxo básico, trocar o token do provedor em um pool de identidade do Amazon Cognito por credenciais temporárias para chamar serviços. AWS 

**Usar o login social com o fluxo básico na aplicação de exemplo**

1. Na aplicação de demonstração, navegue até a seção **Demonstração interativa**.

1. Selecione a guia **Acesso autenticado**.

1. Selecione a guia **Fluxo básico**.

1. Escolha um provedor social compatível que você configurou, por exemplo, **Fazer login com o Google**, **Fazer login com o Facebook** ou **Fazer login com a Amazon**.

1. Faça login e concorde em compartilhar dados do usuário com a aplicação.

1. O provedor redireciona de volta para o URI de redirecionamento da aplicação.

1. O aplicativo envia o token do provedor para seu grupo de identidades e recupera credenciais temporárias AWS 

1. A aplicação exibe o painel **Resultados** na interface da web.

   Após a autenticação bem-sucedida, você verá a interface da web exibindo o painel **Resultados** e terá duas opções para explorá-lo:

   1. Botão **Exibir somente credenciais**: escolha esse botão se quiser ver diretamente AWS as credenciais temporárias geradas sem os detalhes do fluxo da API. 

      ```
      {
        "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
        "Credentials": {
          "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
          "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
          "Expiration": "2025-08-12T13:36:17-07:00"
        }
      }
      ```

   1. **Exibir botão detalhado do fluxo da API**: escolha esse botão se quiser ver as solicitações da step-by-step API. 
      +  A aplicação conecta o usuário com um IdP social e obtém o token do provedor. Os bancos de identidades aceitam estes artefatos dos provedores sociais:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/getting-started-identity-pools-application.html)

        Após a autenticação bem-sucedida com o provedor social, seu aplicativo recebe uma OAuth resposta contendo o token de acesso e outros detalhes de autenticação:

        ```
        {
           "access_token": "ya29.A0AS3H6NEXAMPLE......",
           "expires_in": 3599,
           "scope": "openid https://www.examplesocial....",
           "token_type": "Bearer",
           "id_token": "eyJhbGciOiJSUzI1NiIsEXAMPLE......"
        }
        ```
      +  Solicitação de API `GetId()` com o ID do banco de identidades e um mapa `Logins` contendo o token do provedor social.

        ```
        POST GetId
        {
          "IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
          "Logins": {
            "accounts.google.com": "token..."
          }
        }
        ```

        Resposta:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
        }
        ```
      +  `GetOpenIdToken()` com o `IdentityID` retornado e o mesmo mapa Logins.

        ```
        POST GetOpenIdToken
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
          "Logins": {
            "accounts.google.com": "token..."
          }
        }
        ```

        Resposta:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
          "Token": "eyJraWQiOiJFWAMPLE......"
        }
        ```
      +  `AssumeRoleWithWebIdentity()` com o token OpenID

        ```
        POST AssumeRoleWithWebIdentity
        {
          "RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolAuth_Role",
          "WebIdentityToken": "eyJraWQiOiJFWAMPLE......"
        }
        ```

        Resposta:

        ```
        {
          "Credentials": {
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
            "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
            "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
            "Expiration": "2025-08-12T14:36:17-07:00"
          }
        }
        ```

**O que aconteceu**: o Amazon Cognito validou o token em relação ao provedor configurado e emitiu um token OpenID. O aplicativo ligou AWS STS diretamente para assumir uma função do IAM e receber credenciais temporárias.

------

### Noções básicas sobre o acesso social
<a name="understand-social-access"></a>
+ Os usuários sociais recebem AWS credenciais temporárias por meio dos grupos de identidade do Amazon Cognito após se autenticarem com seu provedor social.
+ Cada usuário autenticado recebe um ID de identidade exclusivo que persiste em todas as sessões.
+ Essas credenciais estão vinculadas a um perfil do IAM projetado especificamente para acesso autenticado, fornecendo permissões mais amplas do que o acesso de convidado.
+ Os tokens do provedor social são trocados por AWS credenciais, mantendo a identidade e as permissões do usuário.

## Autenticação de grupos de usuários do Amazon Cognito
<a name="user-pool-authentication"></a>

Esta etapa explora a autenticação do Amazon Cognito com a integração de [login gerenciado](cognito-user-pools-managed-login.md) de grupos de usuários. Ao vincular um grupo de usuários como um IdP a um banco de identidades, os tokens do grupo de usuários autorizam o banco de identidades a emitir credenciais temporárias.

------
#### [ User pool authentication with enhanced flow ]

O fluxo aprimorado fornece uma abordagem simplificada para obter credenciais da AWS por meio de bancos de identidades do Amazon Cognito com uma única solicitação de API.

**Usar a autenticação do grupo de usuários do Amazon Cognito com o fluxo aprimorado do banco de identidades**

1. Na aplicação de demonstração, navegue até a seção **Demonstração interativa**.

1. Selecione a guia **Acesso autenticado**.

1. Selecione a guia **Fluxo aprimorado**.

1. Selecione **Fazer login com grupos de usuários do Amazon Cognito**.

1. Conclua o login com seu nome de usuário e senha no login gerenciado.

1. O grupo de usuários redireciona de volta ao URI de redirecionamento da aplicação com um código de autorização.

1. A aplicação troca o código de autorização com o grupo de usuários por tokens web JSON.

1. O aplicativo troca o token de ID com seu grupo de identidades por AWS credenciais temporárias

1. A aplicação exibe o painel **Resultados** na interface da web.

   Após a autenticação bem-sucedida, você verá a interface da web exibindo o painel **Resultados** e terá duas opções para explorá-lo:

   1. Botão **Exibir somente credenciais**: escolha esse botão se quiser ver diretamente AWS as credenciais temporárias geradas sem os detalhes do fluxo da API. 

      ```
      {
        "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
        "Credentials": {
          "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
          "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
          "Expiration": "2025-08-12T13:36:17-07:00"
        }
      }
      ```

   1. **Exibir botão detalhado do fluxo da API**: escolha esse botão se quiser ver as solicitações da step-by-step API. 
      +  A aplicação conecta o usuário com o Amazon Cognito. Após a autenticação bem-sucedida com o grupo de usuários, seu aplicativo recebe uma resposta OAuth 2.0 contendo o token de ID (JWT). Os bancos de identidades aceitam tokens de ID JWT dos grupos de usuários usando este formato de chave de provedor:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/getting-started-identity-pools-application.html)

        Após a autenticação bem-sucedida com o grupo de usuários, seu aplicativo recebe uma resposta OAuth 2.0 contendo o token de ID (JWT):

        ```
        {
           "id_token": "eyJraWQiOiJFWAMPLE......",
           "token_type": "Bearer",
           "expires_in": 3600
        }
        ```
      +  Solicitação de API `GetId()` com seu `identityPoolId` e um mapa `Logins` que inclui a chave de provedor do grupo de usuários mapeada para `id_token`. O Amazon Cognito verificou que a assinatura, o emissor, a expiração e o público (`aud`) do token de ID do grupo de usuários correspondem a um dos clientes do aplicativo que IDs você registrou para esse IdP do grupo de usuários no grupo de identidades.

        ```
        POST GetId
        {
          "AccountId": "111122223333",
          "IdentityPoolId": "us-east-1:1ac4a76d-1fef-48aa-83af-4224799c0b5c",
          "Logins": {
            "cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......"
          }
        }
        ```

        Se for válido, ele encontrará ou criará e retornará o `IdentityID` do usuário. Um exemplo de resposta é semelhante a:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
        }
        ```
      +  `GetCredentialsForIdentity()` com o `identityPoolId` retornado e o mesmo mapa `Logins` com o `id_token`. O Amazon Cognito revalida a assinatura, o emissor, a expiração e o público-alvo (`aud`) do token de ID do grupo de usuários que IDs você registrou para esse IdP do grupo de usuários no grupo de identidades.

        ```
        POST GetCredentialsForIdentity
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
          "Logins": {
            "cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......"
          }
        }
        ```

        Se válido, ele escolhe uma função do IAM (roles-in-token, regras ou padrão), liga AWS STS em seu nome e retorna AWS credenciais temporárias. Um exemplo de resposta é semelhante a:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
          "Credentials": {
            "AccessKeyId": "ASIAW7TIP7EJEXAMPLE",
            "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
            "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
            "Expiration": "2025-08-12T14:36:17-07:00"
          }
        }
        ```

------
#### [ User pool authentication with basic flow ]

O fluxo básico fornece controle granular sobre o processo de autenticação com solicitações de API separadas para recuperação de identidade e geração de credenciais.

**Usar a autenticação do grupo de usuários do Amazon Cognito com o fluxo básico do banco de identidades**

1. Na aplicação de demonstração, navegue até a seção **Demonstração interativa**.

1. Selecione a guia **Acesso autenticado**.

1. Selecione a guia **Fluxo básico**.

1. Selecione **Fazer login com grupos de usuários do Amazon Cognito**.

1. Conclua o login com seu nome de usuário e senha no login gerenciado.

1. O grupo de usuários redireciona de volta ao URI de redirecionamento da aplicação com um código de autorização.

1. A aplicação troca o código de autorização com o grupo de usuários por tokens web JSON.

1. O aplicativo troca o token de ID com seu grupo de identidades por AWS credenciais temporárias

1. A aplicação exibe o painel **Resultados** na interface da web.

   Após a autenticação bem-sucedida, você verá a interface da web exibindo o painel **Resultados** e terá duas opções para explorá-lo:

   1. Botão **Exibir somente credenciais**: escolha esse botão se quiser ver diretamente AWS as credenciais temporárias geradas sem os detalhes do fluxo da API. 

      ```
      {
        "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
        "Credentials": {
          "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
          "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
          "Expiration": "2025-08-12T13:36:17-07:00"
        }
      }
      ```

   1. **Exibir botão detalhado do fluxo da API**: escolha esse botão se quiser ver as solicitações da step-by-step API. 
      + A aplicação conecta o usuário com um grupo de usuários do Amazon Cognito e obtém o token de ID (JWT) como artefato. Após a autenticação bem-sucedida com o grupo de usuários, seu aplicativo recebe uma OAuth resposta contendo o token de ID (JWT). Os bancos de identidades usam esse token para autenticação:

        ```
        {
           "id_token": "eyJraWQiOiJFWAMPLE......",
           "token_type": "Bearer",
           "expires_in": 3600
        }
        ```
      + Solicitação de API `GetId()` com o ID do banco de identidades e um mapa `Logins` que inclui a chave do provedor do grupo de usuários e o token de ID como valor. O Amazon Cognito verificou que a assinatura, a expiração e o público (aud) do token de ID do grupo de usuários correspondem a um dos clientes do aplicativo IDs que você registrou para esse IdP do grupo de usuários no grupo de identidades.

        ```
        POST GetId
        {
          "AccountId": "111122223333",
          "IdentityPoolId": "us-east-1:1ac4a76d-1fef-48aa-83af-4224799c0b5c",
          "Logins": {
            "cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......"
          }
        }
        ```

        Se for válido, ele encontrará ou criará e retornará o `IdentityID` do usuário. Um exemplo de resposta é semelhante a:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
        }
        ```
      + `GetOpenIdToken()` com o `IdentityID` retornado e o mesmo mapa `Logins`.

        ```
        POST GetOpenIdToken
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
          "Logins": {
            "cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......"
          }
        }
        ```

        Resposta:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
          "Token": "eyJraWQiOiJFWAMPLE......"
        }
        ```

        **O que acontece nessa etapa:** o Amazon Cognito emite um token de identidade web do OpenID Connect de curta duração, proveniente de cognito-identity.amazonaws.com, que representa esse `IdentityId`. O token inclui declarações do OIDC que AWS STS avaliam, incluindo aud (seu ID de grupo de identidade) e amr (autenticado ou não autenticado). A política de confiança do seu perfil do IAM deve exigir essas declarações.
      + `AssumeRoleWithWebIdentity()`- Seu aplicativo liga AWS STS diretamente para trocar o token OpenID do Amazon Cognito por credenciais temporárias AWS 

        ```
        POST sts:AssumeRoleWithWebIdentity
        {
          "RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolAuth_Role",
          "WebIdentityToken": "eyJraWQiOiJFWAMPLE......",
          "RoleSessionName": "CognitoIdentityCredentials"
        }
        ```

        Resposta:

        ```
        {
          "Credentials": {
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
            "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
            "SessionToken": "FwoGZXIvYXdzEEXAMPLE......",
            "Expiration": "2025-08-12T14:36:17-07:00"
          },
          "AssumedRoleUser": {
            "AssumedRoleId": "AROAW7TIP7EJYEXAMPLE:CognitoIdentityCredentials",
            "Arn": "arn:aws:sts::111122223333:assumed-role/Cognito_IdentityPoolAuth_Role/CognitoIdentityCredentials"
          }
        }
        ```

        **O que a aplicação de demonstração fez:** sua aplicação enviou o token OpenID de `GetOpenIdToken()` para AWS STS, solicitando credenciais temporárias. O AWS STS realizou verificações de validação e emitiu credenciais:

------

### Noções básicas sobre o acesso ao grupo de usuários
<a name="understand-user-pool-access"></a>
+ Os usuários do grupo de usuários recebem AWS credenciais temporárias por meio dos grupos de identidade do Amazon Cognito.
+ Essas credenciais estão vinculadas a um perfil do IAM especificada na configuração do banco de identidades.
+ Os tokens de ID do grupo de usuários são trocados por AWS credenciais por meio do pool de identidades.

## Autenticação SAML
<a name="saml-authentication"></a>

Esta etapa explora a autenticação SAML. Os usuários podem entrar com provedores de identidade corporativa que oferecem suporte ao SAML para acessar AWS os serviços. O fluxo básico com SAML não é compatível na aplicação de exemplo.

------
#### [ SAML authentication with enhanced flow ]

Esta seção mostra como você pode usar um provedor de identidade SAML para cadastrar um usuário e, usando o fluxo aprimorado, trocar a declaração de SAML em um pool de identidade do Amazon Cognito por credenciais temporárias AWS para chamar serviços. AWS 

**Usar a autenticação SAML com o fluxo aprimorado do banco de identidades**

1. Na aplicação de demonstração, navegue até a seção **Demonstração interativa**.

1. Selecione a guia **Acesso autenticado**.

1. Selecione a guia **Fluxo aprimorado**.

1. Selecione **Fazer login com o provedor SAML**.

1. Conclua o login com suas credenciais corporativas.

1. O grupo de usuários redireciona de volta para o URI de redirecionamento da aplicação com uma declaração SAML.

1. A aplicação troca o código de autorização com o grupo de usuários por tokens web JSON.

1. O aplicativo troca a resposta SAML com seu grupo de identidades por credenciais temporárias AWS 

1. A aplicação exibe o painel **Resultados** na interface da web.

   Após a autenticação bem-sucedida, você verá a interface da web exibindo o painel **Resultados** e terá duas opções para explorá-lo:

   1. Botão **Exibir somente credenciais**: escolha esse botão se quiser ver diretamente AWS as credenciais temporárias geradas sem os detalhes do fluxo da API.

      ```
      {
        "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
        "Credentials": {
          "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
          "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
          "Expiration": "2025-08-12T13:36:17-07:00"
        }
      }
      ```

   1. **Exibir botão detalhado do fluxo da API**: escolha esse botão se quiser ver as solicitações da step-by-step API.
      +  A aplicação conecta o usuário com um IdP SAML e obtém a resposta SAML. Os bancos de identidades aceitam declarações SAML de provedores corporativos usando o ARN do provedor SAML como chave:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/getting-started-identity-pools-application.html)

        Após a autenticação bem-sucedida com o provedor SAML, a aplicação recebe uma resposta SAML via HTTP POST para o URL de retorno de chamada:

        ```
        {
          "saml_response": "PD94bWwgdmVyc2lvbj0iMS4wIiBFWAMPLE...",
          "provider_arn": "arn:aws:iam::111122223333:saml-provider/EXAMPLE",
          "status": "Authentication successful"
        }
        ```
      +  Solicitação de API `GetId()` com o ID do banco de identidades e um mapa `Logins` contendo o ARN e a declaração do provedor SAML.

        ```
        POST GetId
        {
          "AccountId": "111122223333",
          "IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
          "Logins": {
            "arn:aws:iam::111122223333:saml-provider/EXAMPLE": "PD94bWwgdmVyc2lvbj0iMS4wIiBFWAMPLE..."
          }
        }
        ```

        Resposta:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
        }
        ```
      +  `GetCredentialsForIdentity()` com o `IdentityID` retornado e o mesmo mapa `Logins`.

        ```
        POST GetCredentialsForIdentity
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
          "Logins": {
            "arn:aws:iam::111122223333:saml-provider/EXAMPLE": "PD94bWwgdmVyc2lvbj0iMS4wIiBFWAMPLE..."
          }
        }
        ```

        Resposta:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
          "Credentials": {
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
            "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
            "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......"
          }
        }
        ```

**O que aconteceu**: o Amazon Cognito validou a declaração do SAML em relação ao provedor configurado, escolheu uma função do IAM com base nos atributos ou regras do SAML e ligou em seu nome. AWS STS 

------

### Noções básicas sobre o acesso SAML
<a name="understand-saml-access"></a>
+ Os usuários corporativos recebem AWS credenciais temporárias dos grupos de identidade do Amazon Cognito após se autenticarem com seu provedor de SAML.
+ Cada usuário autenticado recebe um ID de identidade exclusivo que persiste em todas as sessões.
+ Essas credenciais estão vinculadas a um perfil do IAM projetado especificamente para acesso autenticado, fornecendo permissões mais amplas do que o acesso de convidado.
+ As asserções do SAML são trocadas por AWS credenciais, mantendo a identidade do usuário e os atributos da empresa.

## Autenticação OpenID Connect (OIDC)
<a name="oidc-authentication"></a>

Esta etapa explora a autenticação OIDC com provedores de identidades corporativos. Os usuários podem fazer login por meio do provedor de identidade corporativa da organização (como Azure AD, Okta ou Google Workspace) para acessar AWS os serviços. Continue a leitura se quiser informações sobre como integrar a autenticação baseada em padrões aos recursos da AWS . Após implementar a autenticação OIDC, você aprenderá como aproveitar as declarações OIDC para um controle de acesso refinado.

------
#### [ OIDC authentication with enhanced flow ]

Esta seção mostra como você pode usar um provedor de identidade do OIDC para cadastrar um usuário e, usando o fluxo aprimorado, trocar o token do OIDC em um pool de identidade do Amazon Cognito por credenciais temporárias para chamar serviços. AWS AWS 

**Usar o login OIDC com o fluxo aprimorado do banco de identidades**

1. Na aplicação de demonstração, navegue até a seção **Demonstração interativa**.

1. Selecione a guia **Acesso autenticado**.

1. Selecione a guia **Fluxo aprimorado**.

1. Selecione **Fazer login com o provedor OIDC**.

1. Conclua o login com suas credenciais corporativas.

1. O provedor OIDC redireciona de volta à aplicação com um código de autorização.

1. A aplicação troca o código de autorização com o grupo de usuários por tokens web JSON.

1. O aplicativo envia o token OIDC para seu grupo de identidades e recupera credenciais temporárias. AWS 

1. A aplicação exibe o painel **Resultados** na interface da web.

   Após a autenticação bem-sucedida, você verá a interface da web exibindo o painel **Resultados** e terá duas opções para explorá-lo:

   1. Botão **Exibir somente credenciais**: escolha esse botão se quiser ver diretamente AWS as credenciais temporárias geradas sem os detalhes do fluxo da API.

      ```
      {
        "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
        "Credentials": {
          "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
          "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
          "Expiration": "2025-08-12T13:36:17-07:00"
        }
      }
      ```

   1. **Exibir botão detalhado do fluxo da API**: escolha esse botão se quiser ver as solicitações da step-by-step API.
      +  A aplicação conecta o usuário com um IdP OIDC e obtém o token de ID. Os bancos de identidades aceitam tokens OIDC de provedores corporativos:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/getting-started-identity-pools-application.html)

        Após a autenticação bem-sucedida com o provedor do OIDC, seu aplicativo recebe uma resposta OAuth 2.0 contendo os tokens:

        ```
        {
          "token_type": "Bearer",
          "expires_in": 3600,
          "access_token": "eyJraWQiOiJFWAMPLE......",
          "scope": "email openid profile",
          "id_token": "eyJraWQiOiJFWAMPLE......"
        }
        ```
      +  Solicitação de API `GetId()` com o ID do banco de identidades e um mapa `Logins` contendo o token do provedor OIDC.

        ```
        POST GetId
        {
          "AccountId": "111122223333",
          "IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
          "Logins": {
            "example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......"
          }
        }
        ```

        Resposta:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
        }
        ```
      +  `GetCredentialsForIdentity()` com o `IdentityID` retornado e o mesmo mapa Logins.

        ```
        POST GetCredentialsForIdentity
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
          "Logins": {
            "example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......"
          }
        }
        ```

        Resposta:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
          "Credentials": {
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
            "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
            "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......"
          }
        }
        ```

**O que aconteceu**: o Amazon Cognito validou o token OIDC em relação ao provedor configurado, escolheu uma função do IAM (padrão, baseada em declarações ou mapeada por regras) e ligou em seu nome. AWS STS 

------
#### [ OIDC authentication with basic flow ]

Esta seção mostra como você pode usar um provedor de identidade do OIDC para cadastrar um usuário e, usando o fluxo básico, trocar o token do OIDC em um pool de identidade do Amazon Cognito por credenciais temporárias para chamar serviços. AWS AWS 

**Usar o login OIDC com o fluxo básico do banco de identidades**

1. Na aplicação de demonstração, navegue até a seção **Demonstração interativa**.

1. Selecione a guia **Acesso autenticado**.

1. Selecione a guia **Fluxo básico**.

1. Selecione **Fazer login com o provedor OIDC**.

1. Conclua o login com suas credenciais corporativas.

1. O provedor OIDC redireciona de volta à aplicação com um código de autorização.

1. A aplicação troca o código de autorização com o grupo de usuários por tokens web JSON.

1. O aplicativo envia o token OIDC para seu grupo de identidades e recupera credenciais temporárias. AWS 

1. A aplicação exibe o painel **Resultados** na interface da web.

   Após a autenticação bem-sucedida, você verá a interface da web exibindo o painel **Resultados** e terá duas opções para explorá-lo:

   1. Botão **Exibir somente credenciais**: escolha esse botão se quiser ver diretamente AWS as credenciais temporárias geradas sem os detalhes do fluxo da API.

      ```
      {
        "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
        "Credentials": {
          "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
          "SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
          "Expiration": "2025-08-12T13:36:17-07:00"
        }
      }
      ```

   1. **Exibir botão detalhado do fluxo da API**: escolha esse botão se quiser ver as solicitações da step-by-step API.
      +  A aplicação conecta o usuário com um IdP OIDC e obtém o token de ID. Os bancos de identidades aceitam tokens OIDC de provedores corporativos:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/getting-started-identity-pools-application.html)

        Após a autenticação bem-sucedida com o provedor do OIDC, seu aplicativo recebe uma resposta OAuth 2.0 contendo os tokens:

        ```
        {
          "token_type": "Bearer",
          "expires_in": 3600,
          "access_token": "eyJraWQiOiJFWAMPLE......",
          "scope": "openid email profile",
          "id_token": "eyJraWQiOiJFWAMPLE......"
        }
        ```
      +  Solicitação de API `GetId()` com o ID do banco de identidades e um mapa `Logins` contendo o token do provedor OIDC.

        ```
        POST GetId
        {
          "IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
          "Logins": {
            "example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......"
          }
        }
        ```

        Resposta:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
        }
        ```
      +  `GetOpenIdToken()` com o IdentityID retornado e o mesmo mapa `Logins`.

        ```
        POST GetOpenIdToken
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
          "Logins": {
            "example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......"
          }
        }
        ```

        Resposta:

        ```
        {
          "IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
          "Token": "eyJraWQiOiJFWAMPLE......"
        }
        ```
      +  `AssumeRoleWithWebIdentity()` com o token OpenID

        ```
        POST AssumeRoleWithWebIdentity
        {
          "RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolAuth_Role",
          "WebIdentityToken": "eyJraWQiOiJFWAMPLE......"
        }
        ```

        Resposta:

        ```
        {
          "Credentials": {
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
            "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
            "SessionToken": "FwoGZXIvYXdzEEXAMPLE......",
            "Expiration": "2025-08-12T14:36:17-07:00"
          }
        }
        ```

**O que aconteceu**: o Amazon Cognito validou o token OIDC em relação ao provedor configurado e retornou um token OpenID. O aplicativo ligou AWS STS diretamente para assumir a função apropriada do IAM e recebeu credenciais de curta duração.

------

### Noções básicas sobre a autenticação OIDC
<a name="understand-oidc-authentication"></a>
+ Baseado em padrões: o OIDC é baseado em OAuth 2.0 e fornece informações de identidade padronizadas.
+ Validação de tokens: os tokens de ID podem ser validados quanto à autenticidade.
+ Acesso baseado em declarações: as declarações OIDC podem ser usadas para mapeamento de perfis e controle de acesso.
+ Integração corporativa: funciona com provedores de identidades corporativos populares.

## Próximas etapas
<a name="next-steps"></a>

Agora que você configurou e explorou a aplicação de demonstração, você pode:
+ Configurar provedores de identidades adicionais que você ainda não testou.
+ Experimentar a autenticação avançada e básica para entender suas diferenças.
+ Personalizar a demonstração para seu próprio caso de uso.
+ Integrar os bancos de identidades do Amazon Cognito em suas próprias aplicações.