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

    1. 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.2

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

    2. 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:

    1. Abra la consola de administración de Keycloak, coloque el cursor sobre la lista Maestra y haga clic en Agregar reino .

    2. Especifique Nombre=myrealm y haga clic en Crear.

    3. 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/ )

    4. En la consola de administración de Keycloak, haga clic en Clientes para crear un nuevo cliente y especificar lo siguiente:

    5. Establecer URL de redireccionamiento válidas en https://localhost:8442/ejbca/adminweb*
      imágenes/descargar/archivos adjuntos/143752905/Captura de pantalla_2021-01-04_a_10.04.19.png

    6. Para configurar la audiencia que se enviará con token, seleccione la pestaña Mapeadores en la vista Cliente y haga clic en Crear .
      imágenes/descargar/archivos adjuntos/143752905/Captura de pantalla_2021-09-09_a_14.33.37.png

      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:

    1. En EJBCA, vaya a Configuración del sistema>Proveedores OAuth confiables .

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

        imágenes/descargar/archivos adjuntos/143752905/Captura de pantalla_2021-09-13_a_10.49.13.png
    3. Haga clic en Agregar para crear el proveedor OAuth.

    Paso 4: Crear usuario en Realm

    Para crear un usuario en el reino:

    1. En la consola de administración de Keycloak, haga clic en Usuarios>Agregar usuario .

    2. Especifique un nombre de usuario, nombre y apellido y luego haga clic en Guardar .
      imágenes/descargar/archivos adjuntos/143752905/Captura de pantalla_2020-09-08_a_09.38.45.png

    3. Para establecer una contraseña inicial para el usuario, haga clic en la pestaña Credenciales .
      imágenes/descargar/archivos adjuntos/143752905/Captura de pantalla_2020-09-08_a_09.39.13.png

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

    1. En EJBCA, en Funciones del sistema, haga clic en Rol .

    2. 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 .
        imágenes/descargar/archivos adjuntos/143752905/Captura de pantalla_2021-04-15_a_11.27.12.png

      • Seleccione el proveedor OAuth.

      • Opcionalmente, actualice las reglas de acceso para el usuario.

    Paso 6: Iniciar sesión en EJBCA

    1. A continuación, para iniciar sesión con EJBCA, vaya a https://localhost:8442/ejbca/adminweb/

    2. Se le redirige a la página de inicio de sesión de EJBCA, donde se enumeran los proveedores OAuth configurados.

    3. 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.
      imágenes/descargar/archivos adjuntos/143752905/SelectLoginMethod.png

    4. Ingrese el nombre de usuario y la contraseña y haga clic en Iniciar sesión para ser redirigido a EJBCA.
      imágenes/descargar/archivos adjuntos/143752905/Captura de pantalla_2021-01-04_a_10.18.17.png

    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