

AWS El servicio de modernización de mainframes (experiencia en entornos de ejecución gestionados) ya no está abierto a nuevos clientes. Para obtener prestaciones similares a las del Servicio de Modernización de AWS Mainframe (experiencia en entornos de ejecución gestionados), explore el Servicio de Modernización de AWS Mainframe (experiencia autogestionada). Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte Cambio en la disponibilidad de la modernización del [AWS mainframe.](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Configura la autenticación de Gapwalk con Keycloak OAuth2
<a name="ba-runtime-auth-keycloak"></a>

En este tema se describe cómo configurar la OAuth2 autenticación para las aplicaciones de Gapwalk que utilizan Keycloak como proveedor de identidad (IdP). En este tutorial, utilizaremos 24.0.0.

## Requisitos previos
<a name="ba-runtime-auth-keycloak-prereq"></a>
+ [Keycloak](https://www.keycloak.org/)
+ Aplicación Gapwalk

## Configuración de Keycloak
<a name="keycloak-setup"></a>

1. Vaya al panel de Keycloak en el navegador web. Las credenciales predeterminadas son admin/admin. Vaya a la barra de navegación superior izquierda y cree un dominio con el nombre **demo**, tal como se muestra en la imagen siguiente.  
![\[alt_text\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/ba-runtime-auth-keycloak_2.png)

1. Cree un cliente con el nombre **app-demo**.  
![\[User interface for creating a new client in an authentication management system.\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/ba-runtime-auth-keycloak_3.jpg)

   Reemplace `localhost:8080` por la dirección de su aplicación de Gapwalk  
![\[alt_text\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/ba-runtime-auth-keycloak_4.png)  
![\[alt_text\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/ba-runtime-auth-keycloak_5.png)

1. Para obtener su secreto de cliente, elija **Clientes**, **app-demo** y **Credenciales**.  
![\[alt_text\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/ba-runtime-auth-keycloak_6.jpg)

1. Elija **Clientes**, **Ámbitos de clientes** y **Agregar asignador predefinido**. Elija los **roles de dominio**.  
![\[alt_text\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/ba-runtime-auth-keycloak_7.jpg)

1. Edite su rol de dominio con la configuración que se muestra en la imagen siguiente.  
![\[alt_text\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/ba-runtime-auth-keycloak_8.jpg)

1. Recuerde el **Nombre de notificación de token** definido. Necesitará este valor en la definición de configuración de Gapwalk para la propiedad `gapwalk-application.security.claimGroupName`.  
![\[alt_text\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/ba-runtime-auth-keycloak_9.jpg)

1. Elige **Roles de dominios** y cree 3 roles: **SUPER\$1ADMIN**, **ADMIN** y **USER**. Estos roles se asignan posteriormente a `ROLE_SUPER_ADMIN`, `ROLE_ADMIN` y `ROLE_USER` por la aplicación de Gapwalk para poder acceder a algunas llamadas API de REST restringidas.  
![\[alt_text\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/ba-runtime-auth-keycloak_10.jpg)

## Integración de Keycloak en la aplicación de Gapwalk
<a name="gapwalk-setup"></a>

Edite el archivo `application-main.yml` de la siguiente manera:

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

Sustituya*<KEYCLOAK\$1SERVER\$1HOSTNAME>*, *<YOUR\$1REALM\$1NAME>**<YOUR\$1CLIENT\$1ID>*, y *<YOUR\$1CLIENT\$1SECRET>* por el nombre de host del servidor Keycloak, el nombre de dominio, el ID de cliente y el secreto de cliente.