Configuración de OAuth mediante Keycloak
EMPRESA Esta es una característica de EJBCA Enterprise.
A continuación se describe cómo configurar Keycloak localmente para probar la funcionalidad OAuth en EJBCA.
Keycloak proporciona una guía de introducción a Keycloak en Docker; consulte la documentación de Keycloak Keycloak en Docker .
Esta página incluye valores de muestra para configurar Keycloak en una máquina local: reemplace los valores según sea necesario para su entorno.
Paso 1: Inicie sesión en Keycloak
Desde una terminal, inicie Keycloak con el siguiente comando:
docker run -p 8084:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin quay.io/keycloak/keycloak:11.0.2El puerto 8080 lo utiliza la web pública EJBCA, y Keycloak se inicia con la exposición al puerto 8084. El comando también crea un usuario administrador inicial con el nombre de usuario admin y la contraseña admin . Recuerda, solo estás configurando un entorno de pruebas sandbox y no deberías hacerlo en producción.
Vaya a la consola de administración de Keycloak en http://localhost:8084/auth/admin e inicie sesión con el nombre de usuario y la contraseña creados.
Paso 2: Crear dominio y cliente
Un dominio en Keycloak es el equivalente a un inquilino y permite crear grupos aislados de aplicaciones y usuarios. Por defecto, hay un único dominio en Keycloak llamado maestro. Este se dedica a administrar Keycloak y no debe usarse para aplicaciones propias.
Para crear un reino y un cliente:
Abra la consola de administración de Keycloak, coloque el cursor sobre la lista Maestra y haga clic en Agregar reino .
Especifique Nombre=myrealm y haga clic en Crear.
Vaya a Configuración de reino > Claves y copie el valor Kid para la clave RSA (que se usará al configurar proveedores OAuth confiables en EJBCA en un paso posterior) y descargue la clave pública.
Alternativamente, consulte http://localhost:8084/auth/realms/myrealm/ )En la consola de administración de Keycloak, haga clic en Clientes para crear un nuevo cliente y especificar lo siguiente:
ID de cliente : ejbcaAdminWeb
Protocolo de cliente : openid-connect
URL raíz : https://localhost:8442/ejbca/adminweb/

Establecer URL de redireccionamiento válidas en https://localhost:8442/ejbca/adminweb*

Para configurar la audiencia que se enviará con token, seleccione la pestaña Mapeadores en la vista Cliente y haga clic en Crear .
Puede definir la Audiencia del Cliente o un valor personalizado. Este valor debe añadirse a las configuraciones de los proveedores de confianza de EJBCA.
Paso 3: Agregar proveedor OAuth en EJBCA
A continuación, configure los proveedores OAuth en la configuración del sistema EJBCA:
En EJBCA, vaya a Configuración del sistema>Proveedores OAuth confiables .
Haga clic en Agregar para crear un proveedor OAuth y especificar lo siguiente:
Seleccione el tipo de proveedor OAuth=Keycloak.
Nombre del proveedor OAuth: especifique una etiqueta única para el proveedor.
URL: Establezca la URL de inicio de sesión base del proveedor. Para esta prueba local con Keycloak, utilice http://localhost:8084/auth.
Nombre del reino: especifique el nombre seleccionado previamente al crear el reino .
Audiencia : un valor de reclamo de aud en el token configurado con mapeadores en Keycloak.
Nombre del cliente: especifique el ID del cliente seleccionado previamente al crear el reino .
Identificador de clave OAuth: agregue un identificador de clave OAuth utilizando el valor Kid copiado anteriormente.
Cargar clave pública: cargue el archivo de clave pública descargado como Clave pública actual y haga clic en Cargar clave pública para agregar la clave al proveedor.

Haga clic en Agregar para crear el proveedor OAuth.
Paso 4: Crear usuario en Realm
Para crear un usuario en el reino:
En la consola de administración de Keycloak, haga clic en Usuarios>Agregar usuario .
Especifique un nombre de usuario, nombre y apellido y luego haga clic en Guardar .

Para establecer una contraseña inicial para el usuario, haga clic en la pestaña Credenciales .

Especifique una contraseña y haga clic en Establecer contraseña .
Paso 5: Agregar usuario en EJBCA
Para agregar este usuario a la lista de miembros del rol EJBCA.
En EJBCA, en Funciones del sistema, haga clic en Rol .
En el rol de administrador , haga clic en Miembros y especifique una de las siguientes opciones:
Reclamo de sujeto ("sub") : como valor de coincidencia, utilice el ID de usuario generado (6014419b-3787-4dbd-9825-db1d05b61814).
-O-Reclamo del emisor ("iss") : como valor de coincidencia, utilice http://localhost:8084/auth/realms/myrealm .

Seleccione el proveedor OAuth.
Opcionalmente, actualice las reglas de acceso para el usuario.
Paso 6: Iniciar sesión en EJBCA
A continuación, para iniciar sesión con EJBCA, vaya a https://localhost:8442/ejbca/adminweb/
Se le redirige a la página de inicio de sesión de EJBCA, donde se enumeran los proveedores OAuth configurados.
Haga clic en el nombre de su proveedor OAuth de Keycloak para ser redirigido a la página de inicio de sesión de Keycloak.

Ingrese el nombre de usuario y la contraseña y haga clic en Iniciar sesión para ser redirigido a EJBCA.
Notas adicionales
HTTPS se puede configurar en Keycloak, sin embargo, si el certificado del servidor Keycloak que se encadena a una raíz no es de confianza para Java, deberá agregarlo manualmente al almacén de confianza de Java.
Agregar una CA al almacén de confianza de Java en CentOS/RHEL
keytool -importcert -noprompt -trustcacerts - alias raíz - archivo raíz .pem -keystore /etc/pki/java/cacerts -storepass changeit