

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 autenticação para aplicações do Gapwalk
<a name="ba-runtime-auth"></a>

Para configurar a OAuth2 autenticação para seu aplicativo Gapwalk, você precisa configurar um provedor de identidade (IdP) e integrá-lo ao seu aplicativo. Este guia aborda as etapas para usar o Amazon Cognito ou o Keycloak como o IdP. Com o Amazon Cognito, é possível atualizar o arquivo de configuração de sua aplicação com os detalhes do grupo de usuários do Cognito. Com o Keycloak, você pode controlar o acesso aos seus aplicativos APIs e recursos com base nas funções atribuídas ao usuário.

**Topics**
+ [Configurar a OAuth2 autenticação do Gapwalk com o Amazon Cognito](ba-runtime-auth-cognito.md)
+ [Configure a OAuth2 autenticação Gapwalk com o Keycloak](ba-runtime-auth-keycloak.md)

# 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\$1ADMIN, ADMIN e USER) e associe o usuário a um ou mais desses grupos. Posteriormente, esses perfis são associados a ROLE\$1SUPER\$1ADMIN, ROLE\$1ADMIN e ROLE\$1USER 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.

# Configure a OAuth2 autenticação Gapwalk com o Keycloak
<a name="ba-runtime-auth-keycloak"></a>

Este tópico descreve como configurar a OAuth2 autenticação para aplicativos Gapwalk usando o Keycloak como provedor de identidade (IdP). Neste tutorial, usamos o Keycloak 24.0.0.

## Pré-requisitos
<a name="ba-runtime-auth-keycloak-prereq"></a>
+ [Keycloak](https://www.keycloak.org/)
+ Aplicação Gapwalk

## Configuração do Keycloak
<a name="keycloak-setup"></a>

1. Acesse o painel do Keycloak no navegador da web. As credenciais padrão são admin/admin. Acesse a barra de navegação do canto superior esquerdo e crie um domínio com o nome **demo**, conforme mostrado na imagem a seguir.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_2.png)

1. Crie um cliente com o nome **app-demo**.  
![\[User interface for creating a new client in an authentication management system.\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_3.jpg)

   Substituir `localhost:8080` pelo endereço da sua aplicação Gapwalk  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_4.png)  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_5.png)

1. Para receber o segredo do cliente, escolha **Clientes**, depois **app-demo** e depois **Credenciais**.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_6.jpg)

1. Escolha **Clientes**, depois **Escopos do cliente** e, depois, **Adicionar mapeador predefinido**. Escolha **Perfis do domínio**.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_7.jpg)

1. Edite o perfil de domínio com a configuração mostrada na imagem a seguir.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_8.jpg)

1. Lembre-se do **Nome de reivindicação de token** definido. Você precisará desse valor na definição de configurações do Gapwalk para a propriedade `gapwalk-application.security.claimGroupName`.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_9.jpg)

1. Escolha **Perfis do domínio** e crie três perfis: **SUPER\$1ADMIN**, **ADMIN** e **USER**. Esses perfis são posteriormente associados a `ROLE_SUPER_ADMIN`, `ROLE_ADMIN` e `ROLE_USER` pela aplicação Gapwalk para poder acessar algumas chamadas restritas de API REST.  
![\[alt_text\]](http://docs.aws.amazon.com/pt_br/m2/latest/userguide/images/ba-runtime-auth-keycloak_10.jpg)

## Integrar o Keycloak à aplicação Gapwalk
<a name="gapwalk-setup"></a>

Edite `application-main.yml` da seguinte forma:

```
gapwalk-application.security: enabled
gapwalk-application.security.identity: oauth
gapwalk-application.security.issuerUri: http://<KEYCLOAK_SERVER_HOSTNAME>/realms/<YOUR_REALM_NAME>
gapwalk-application.security.claimGroupName: "keycloak:groups"

gapwalk-application.security.userAttributeName: "preferred_username"
# Use "username" for cognito, 
#     "preferred_username" for keycloak
#      or any other string

spring:
  security:
    oauth2:
      client:
        registration:
          demo:
            client-id: <YOUR_CLIENT_ID>
            client-name: Demo App
            client-secret: <YOUR_CLIENT_SECRET>
            provider: keycloak
            authorization-grant-type: authorization_code
            scope: openid
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
        provider:
          keycloak:
            issuer-uri: ${gapwalk-application.security.issuerUri}
            authorization-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/auth
            jwk-set-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/certs
            token-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/token
            user-name-attribute: ${gapwalk-application.security.userAttributeName}
      resourceserver:
        jwt:
          jwk-set-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/certs
```

Substitua *<KEYCLOAK\$1SERVER\$1HOSTNAME>**<YOUR\$1REALM\$1NAME>*,*<YOUR\$1CLIENT\$1ID>*, e *<YOUR\$1CLIENT\$1SECRET>* por seu nome de host do servidor Keycloak, seu nome de domínio, seu ID de cliente e seu segredo de cliente.