

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.

# Configurar la autenticación para las aplicaciones de Gapwalk
<a name="ba-runtime-auth"></a>

Para configurar la OAuth2 autenticación de su aplicación Gapwalk, debe configurar un proveedor de identidad (IdP) e integrarlo con su aplicación. En esta guía se describen los pasos para utilizar Amazon Cognito o Keycloak como IdP. Con Amazon Cognito, puede actualizar el archivo de configuración de la aplicación con los detalles del grupo de usuarios de Cognito. Con Keycloak, puedes controlar el acceso a tu aplicación APIs y a los recursos en función de las funciones asignadas al usuario.

**Topics**
+ [Configurar la OAuth2 autenticación de Gapwalk con Amazon Cognito](ba-runtime-auth-cognito.md)
+ [Configura la autenticación de Gapwalk con Keycloak OAuth2](ba-runtime-auth-keycloak.md)

# Configurar la OAuth2 autenticación de Gapwalk con Amazon Cognito
<a name="ba-runtime-auth-cognito"></a>

En este tema se describe cómo configurar la OAuth2 autenticación para las aplicaciones de Gapwalk que utilizan Amazon Cognito como proveedor de identidad (IdP).

## Requisitos previos
<a name="ba-runtime-auth-cognito-prereq"></a>

En este tutorial utilizaremos Amazon Cognito como IdP y PlanetDemo como proyecto modernizado.

Puede utilizar cualquier otro proveedor de identidades externo. La ClientRegistration información debe obtenerse de su IDP y es necesaria para la autenticación de Gapwalk. Para obtener más información, consulte la [Guía para desarrolladores de Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/).

**La información: ClientRegistration **

client-id  
El ID de la ClientRegistration. En nuestro ejemplo, lo será PlanetsDemo.

client-secret  
Su secreto de cliente.

authorization endpoint  
El URI del punto de conexión de autorización para el servidor de autorizaciones.

token endpoint  
El URI del punto de conexión del token para el servidor de autorización.

jwks endpoint  
El URI utilizado para obtener la clave web JSON (JWK) que contiene las claves para validar la firma web JSON emitida por el servidor de autorización.

redirect URI  
URI al que el servidor de autorización redirige al usuario final si se le concede acceso.

## Configuración de Amazon Cognito
<a name="cog-setup"></a>

En primer lugar, crearemos y configuraremos un usuario y un grupo de usuarios de Amazon Cognito que utilizaremos con nuestra aplicación de Gapwalk implementada con fines de prueba.

**nota**  
Si utiliza otro IdP, puede saltarse este paso.

**Creación de un grupo de usuarios**

1. Vaya a Amazon Cognito en Consola de administración de AWS y autentíquese con sus credenciales. AWS 

1. Elija **Grupos de usuarios**.

1. Elija **Crear un grupo de usuarios**.

1. En **Configurar la experiencia de inicio de sesión**, mantenga el tipo de proveedor predeterminado **Grupo de usuarios de Cognito**. **Puede elegir una o varias **Opciones de inicio de sesión del grupo de usuarios de Cognito**; por ahora, elija **Nombre de usuario** y, a continuación, Siguiente**.  
![\[alt_text\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/cog-auth-provider.png)

1. En **Configurar los requisitos de seguridad**, mantenga los valores predeterminados y deshabilite **Autenticación multifactor** seleccionando **Sin MFA** y, a continuación, elija **Siguiente**.  
![\[alt_text\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/cog-sec-requirements.png)

1. Como seguridad, deshabilite **Habilitar el registro automático** y, a continuación, seleccione **Siguiente**.  
![\[alt_text\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/cog-config-sign-up.png)

1. Elija **Enviar correo electrónico con Cognito** y, a continuación, elija **Siguiente**.  
![\[alt_text\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/cog-email.png)

1. En **Integrar su aplicación**, especifique un nombre para su grupo de usuarios. En **Páginas de autenticación alojadas**, elija **Usar la interfaz de usuario alojada de Cognito**.  
![\[alt_text\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/cog-domain.png)

1. Para simplificar, en **Dominio**, elija **Utilizar un dominio de Cognito** e introduzca un prefijo de dominio; por ejemplo, `https://planetsdemo`. La aplicación de demostración debe añadirse como cliente.

   1. En **Cliente de aplicación inicial**, elija **Cliente confidencial**. Introduzca un nombre de cliente de aplicación, por ejemplo **planetsdemo**, y, a continuación, elija **Generar un secreto de cliente**.

   1. En **URL de devolución de llamadas permitidas**, introduzca la URL a la que redirigir al usuario tras la autenticación. La URL debe finalizar con `/login/oauth2/code/cognito`. Por ejemplo, para nuestra aplicación y aplicaciones de backend de Gapwalk y 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
      ```

      Puede editar la URL más adelante.  
![\[alt_text\]](http://docs.aws.amazon.com/es_es/m2/latest/userguide/images/cog-urls.png)

   1. En **Permitido cierre de sesión**, URLs introduzca la URL de la página de cierre de sesión a la que desea que Amazon Cognito redirija cuando la aplicación cierre sesión de los usuarios. Por ejemplo, para las aplicaciones de backend de Gapwalk y BAC:

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

      Puede editar la URL más adelante.

   1. Mantenga los valores predeterminados de las secciones **Configuración avanzada del cliente de aplicación** y **Permisos avanzados de lectura y escritura de atributos**.

   1. Elija **Siguiente**.

1. En **Revisar y crear**, verifique sus opciones y, a continuación, elija **Crear un grupo de usuarios**.

Para obtener más información, consulte [Creación de un grupo de usuarios](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-user-pool.html).

**Creación de usuarios**

Como el registro automático está deshabilitado, cree un usuario de Amazon Cognito. Vaya a la consola de Amazon Cognito. Elija el grupo de usuarios que ha creado y, a continuación, en **Usuarios**, elija **Crear usuario**.

En **Información del usuario**, elija **Enviar una invitación por email**, introduzca un nombre de usuario y una dirección de correo electrónico y, a continuación, seleccione **Generar una contraseña**. Seleccione la opción **Crear usuario**.

**Creación de roles**

En la pestaña **Grupos**, cree 3 grupos (SUPER\$1ADMIN, ADMIN y USER) y asocie su usuario a uno o más de estos grupos. Posteriormente, la aplicación de Gapwalk asigna estos roles a ROLE\$1SUPER\$1ADMIN, ROLE\$1ADMIN y ROLE\$1USER para poder acceder a algunas llamadas API REST restringidas.

La aplicación implementa un scope-to-role mapeo jerárquico que funciona con varios proveedores de identidad. OAuth2 Cuando los tokens JWT emitidos por Cognito se utilizan para la autorización del servidor de recursos, los ámbitos definidos en el token se asignan automáticamente a las funciones correspondientes.

## Integración de Amazon Cognito en la aplicación de Gapwalk
<a name="integrate-cognito"></a>

Ahora que el grupo de usuarios y el usuario de Amazon Cognito están preparados, vaya al archivo `application-main.yml` de la aplicación modernizada y agregue el siguiente 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
```

Reemplace los siguientes marcadores de posición como se indica:

1. Vaya a Amazon Cognito en Consola de administración de AWS y autentíquese con sus credenciales. AWS 

1. Elija **Grupos de usuarios** y el grupo de usuarios que ha creado. Puede encontrar su ID de **grupo *pool-id* de usuarios**.

1. Selecciona **Integración de aplicaciones**, donde encontrarás la tuya*your-cognito-domain*, y luego ve a **Clientes y análisis de aplicaciones** y elige tu aplicación.

1. En el **cliente de aplicaciones: YourApp**, puedes encontrar las opciones *client-name**client-id*, y *client-secret* (**Mostrar el secreto del cliente**).

1. *region-id*corresponde al ID de AWS región en el que creó su usuario y grupo de usuarios de Amazon Cognito. Ejemplo: `eu-west-3`.

1. Para, *redirect-uri* introduzca el URI que especificó para la URL de devolución de **llamada permitida.** En nuestro ejemplo, es `http://localhost:8080/planetsdemo/login/oauth2/code/cognito`.

Ahora puede implementar su aplicación de Gapwalk y usar el usuario creado anteriormente para iniciar sesión en su aplicación.

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