

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 (Self-ManagedExperience). 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 de AWS mainframes](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**.  
![Página de lista de clientes con el botón Crear cliente resaltado en la barra de herramientas.](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\_ADMIN**, **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\_SERVER\_HOSTNAME>}}{{<YOUR\_REALM\_NAME>}},{{<YOUR\_CLIENT\_ID>}}, y {{<YOUR\_CLIENT\_SECRET>}} por el nombre de host del servidor Keycloak, el nombre de su dominio, su ID de cliente y su secreto de cliente.