

AWS O Mainframe Modernization Service (experiência em Managed Runtime Environment) não está mais aberto a novos clientes. Para recursos semelhantes ao AWS Mainframe Modernization Service (experiência em Managed Runtime Environment), explore o AWS Mainframe Modernization Service (experiência autogerenciada). Os clientes atuais podem continuar usando o serviço normalmente. Para obter mais informações, consulte Alteração na [disponibilidade AWS da modernização do mainframe](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

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

# Configurar a OAuth2 autenticação do Gapwalk com o Amazon Cognito
<a name="ba-runtime-auth-cognito"></a>

Este tópico descreve como configurar a OAuth2 autenticação para aplicativos Gapwalk usando o Amazon Cognito como provedor de identidade (IdP).

## Pré-requisitos
<a name="ba-runtime-auth-cognito-prereq"></a>

Neste tutorial, usaremos o Amazon Cognito como IdP e PlanetDemo como projeto modernizado.

Você pode usar qualquer outro provedor de identidade externo. As ClientRegistration informações devem ser obtidas do seu IdP e são necessárias para a autenticação do Gapwalk. Para obter mais informações, consulte o [Guia do desenvolvedor do Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/).

**As ClientRegistration informações:**

client-id  
O ID da ClientRegistration. Em nosso exemplo, será PlanetsDemo.

client-secret  
O segredo do cliente.

endpoint de autorização  
O URI do endpoint de autorização para o servidor de autorização.

endpoint de token  
O URI do endpoint do token para o servidor de autorização.

endpoint jwks  
O URI usado para receber a chave web JSON (JWK) que contém as chaves para validar a assinatura web JSON emitida pelo servidor de autorização.

URI de redirecionamento  
O URI para o qual o servidor de autorização redirecionará o usuário final se o acesso for concedido.

## Configuração do Amazon Cognito
<a name="cog-setup"></a>

Primeiro, criaremos e configuraremos um grupo de usuários e usuário do Amazon Cognito que usaremos com nossa aplicação Gapwalk implantada para fins de teste.

**nota**  
Se você estiver usando outro IdP, poderá ignorar esta etapa.

**Criar grupo de usuários**

1. Acesse o Amazon Cognito em Console de gerenciamento da AWS e autentique-se usando suas credenciais. AWS 

1. Escolha **Grupos de usuários**.

1. Selecione **Criar um grupo de usuários**.

1. Em **Configurar a experiência de login**, mantenha o tipo de provedor padrão do **grupo de usuários do Cognito**. Você pode escolher uma ou várias **opções de login do grupo de usuários do Cognito**; por enquanto, escolha **Nome do usuário** e escolha **Próximo.**  
![alt_text](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/cog-auth-provider.png)

1. Em **Configurar os requisitos de segurança**, mantenha os padrões e desative a **Autenticação multifator** escolhendo **Sem MFA** e selecione **Próximo**.  
![alt_text](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/cog-sec-requirements.png)

1. Como medida de segurança, desative a opção **Habilitar autorregistro** e escolha **Próximo**.  
![alt_text](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/cog-config-sign-up.png)

1. Escolha **Enviar e-mails com o Cognito** e **Próximo**.  
![alt_text](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/cog-email.png)

1. Em **Integrar sua aplicação**, escolha um nome para o grupo de usuários. Nas **páginas de autenticação hospedada**, escolha **Usar a interface do usuário hospedada do Cognito**.  
![alt_text](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/cog-domain.png)

1. Para simplificar, em **Domínio**, escolha **Usar um domínio do Cognito** e insira um prefixo de domínio; por exemplo, `https://planetsdemo`. A aplicação de demonstração deve ser adicionada como cliente.

   1. Em **Cliente inicial da aplicação**, escolha **Cliente confidencial**. Insira um nome de cliente da aplicação, por exemplo, **planetsdemo**, e escolha **Gerar um segredo de cliente**.

   1. Em **URL de retorno de chamada permitido**, insira o URL para a qual redirecionar o usuário após a autenticação. O URL deve terminar com `/login/oauth2/code/cognito`. Por exemplo, para nossas aplicações e aplicações de backend Gapwalk e BAC:

      ```
      http://localhost:8080/bac
            http://localhost:8080/bac/login/oauth2/code/cognito
            http://localhost:8080/gapwalk-application
            http://localhost:8080/gapwalk-application/login/oauth2/code/cognito
            http://localhost:8080/planetsdemo
            http://localhost:8080/planetsdemo/login/oauth2/code/cognito
      ```

      É possível editar o URL posteriormente.  
![alt_text](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/cog-urls.png)

   1. Em **Desconexão permitida**, URLs insira a URL da página de saída para a qual você deseja que o Amazon Cognito redirecione quando seu aplicativo desconectar os usuários. Por exemplo, para aplicações de backend Gapwalk e BAC:

      ```
      http://localhost:8080/bac/logout
      http://localhost:8080/gapwalk-application/logout
      http://localhost:8080/planetsdemo/logout
      ```

      É possível editar o URL posteriormente.

   1. Mantenha os valores padrão nas seções **Configurações avançadas do cliente de aplicação** e **Permissões avançadas de leitura e gravação de atributos**.

   1. Escolha **Próximo**.

1. Em **Revisar e criar**, verifique suas escolhas e escolha **Criar grupo de usuários**.

Para obter mais informações, consulte [Criar um grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-user-pool.html).

**Criação de usuário**

Como o autorregistro está desativado, crie um usuário do Amazon Cognito. Navegue até o Amazon Cognito no Console de gerenciamento da AWS. Escolha o grupo de usuários que você criou e, depois, em **Usuários**, escolha **Criar usuário**.

Em **Informações do usuário**, escolha **Enviar um convite por e-mail**, insira um nome de usuário e um endereço de e-mail e escolha **Gerar uma senha**. Selecione **Criar usuário**.

**Criação de perfil**

Na guia **Grupos**, crie três grupos (SUPER\_ADMIN, ADMIN e USER) e associe o usuário a um ou mais desses grupos. Posteriormente, esses perfis são associados a ROLE\_SUPER\_ADMIN, ROLE\_ADMIN e ROLE\_USER pela aplicação Gapwalk para possibilitar o acesso a algumas chamadas restritas de API REST.

O aplicativo implementa um scope-to-role mapeamento hierárquico que funciona com vários OAuth2 provedores de identidade. Quando os tokens JWT emitidos pelo Cognito são usados para autorização do servidor de recursos, os escopos definidos no token são mapeados automaticamente para as funções correspondentes.

## Integrar o Amazon Cognito à aplicação Gapwalk
<a name="integrate-cognito"></a>

Agora que seu grupo de usuários e usuários do Amazon Cognito estão prontos, acesse o arquivo `application-main.yml` da sua aplicação modernizada e adicione o seguinte código:

```
gapwalk-application.security: enabled
gapwalk-application.security.identity: oauth
gapwalk-application.security.issuerUri: https://cognito-idp.<region-id>.amazonaws.com/<pool-id>
gapwalk-application.security.domainName: <your-cognito-domain>

spring:
  security:
    oauth2:
      client:
        registration:
          cognito:
            client-id: <client-id>
            client-name: <client-name>
            client-secret: <client-secret>
            provider: cognito
            authorization-grant-type: authorization_code
            scope: openid
            redirect-uri: "<redirect-uri>"
        provider:
          cognito:
            issuer-uri: ${gapwalk-application.security.issuerUri}
            authorization-uri: ${gapwalk-application.security.domainName}/oauth2/authorize
            jwk-set-uri: ${gapwalk-application.security.issuerUri}/.well-known/jwks.json
            token-uri: ${gapwalk-application.security.domainName}/oauth2/token
            user-name-attribute: username
      resourceserver:
        jwt:
          jwk-set-uri: ${gapwalk-application.security.issuerUri}/.well-known/jwks.json
```

Substitua os seguintes espaços reservados conforme descrito:

1. Acesse o Amazon Cognito em Console de gerenciamento da AWS e autentique-se usando suas credenciais. AWS 

1. Escolha **Grupos de usuários** e o grupo de usuários que você criou. Você pode encontrar o seu {{pool-id}} no **ID do grupo de usuários**.

1. Escolha **Integração de aplicativos**, onde você pode encontrar sua{{your-cognito-domain}}, acesse **Clientes e análises** de aplicativos e escolha seu aplicativo.

1. Em **Cliente de aplicativo: YourApp**, você pode encontrar o {{client-name}}{{client-id}}, e {{client-secret}} (**Mostrar segredo do cliente**).

1. {{region-id}}corresponde ao ID da AWS região em que você criou seu grupo de usuários e usuários do Amazon Cognito. Exemplo: `eu-west-3`.

1. Para, {{redirect-uri}} insira o URI que você especificou para **URL de retorno de chamada permitido**. Em nosso exemplo, é `http://localhost:8080/planetsdemo/login/oauth2/code/cognito`.

Agora é possível implantar sua aplicação Gapwalk e usar o usuário criado anteriormente para fazer login na sua aplicação.