/
¿Cómo desarrollar con Keycloak en local?

¿Cómo desarrollar con Keycloak en local?

Introducción

En esta guía, configuraremos Keycloak en un entorno local sin utilizar Docker para su integración con Plataforma.

Descarga y setup del código fuente

El primer paso será descargarse la versión 21.1.1 de keycloak a través de este enlace: https://github.com/keycloak/keycloak/releases/download/21.1.1/keycloak-21.1.1.zip

Una vez se haya descargado el archivo .zip, extraemos la carpeta. Dentro de la carpeta keycloak 21.1.1 encontramos diferentes archivos y carpetas. En el directorio de /config añadiremos (y reemplazaremos si es necesario) los siguientes archivos: keycloak.conf y quarkus.properties.

 

 

image-20250115-113610.png

 

El siguiente paso será copiar la carpeta /theme del directorio /tools/keycloak/server, ubicado en la ruta donde está descargado el código fuente de Plataforma.

 

image-20250115-113712.png

Nos volvemos a situar en la carpeta Keycloak y borramos el directorio /themes. Pegamos la carpeta theme que copiamos anteriormente, y modificamos el nombre de la carpeta para añadirle una “s” al final.

 

 

Los archivos keycloak.conf y quarkus.properties configuran aspectos clave del servidor, como las propiedades de base de datos y comportamiento general. Los archivos .ftl del directorio /themes personalizan las páginas de inicio de sesión para adaptarlas al diseño y flujo deseados.

A continuación, abrimos una consola de comandos y nos situamos en el repositorio de Plataforma, exactamente en /tools/keycloak/onesaitplatform-keycloak-storage-provider. Vamos a compilar con Maven con el siguiente comando: mvn clean package -Ddialect=org.hibernate.dialect.MySQL5InnoDBDialect.

 

Cuando haya terminado este proceso, en el explorador de archivos, accedemos a la carpeta /target de onesaitplatform-keycloak-storage-provider para copiar el .jar que se ha generado en la compilación. Este archivo lo pegamos en el directorio /providers de la carpeta de Keycloak.

Iniciar Keycloak

Con estos pasos, hemos completado la configuración inicial y estamos listos para iniciar Keycloak. Para ello, abrimos la consola de comandos, nos posicionamos en la ruta donde esté nuestra carpeta de Keycloak y lanzamos este comando: bin\kc.bat start-dev.

 

Con el Keycloak corriendo accedemos a esta url: http://localhost:8080/auth. El primer paso es crearnos la cuenta de administrador, un ejemplo de credenciales puede ser: admin / admin. Esto se hace en el primer bloque, si es la primera vez que accedes, aparecerá un pequeño form a cumplimentar con el nombre de usuario y la contraseña.

 

Desarrollo sobre librerías Java plataforma

A continuación, desde Eclipse, importamos los proyectos Maven de las librerías onesaitplatform-keycloak-storage-provider y onesaitplatform-keycloak-manager desde la ruta donde tenemos descargado el código fuente de plataforma: tools/keycloak/onesaitplatform-keycloak-manager y tools/keycloak/onesaitplatform-keycloak-storage-provider. Una vez importado el keycloak-manager es posible que se muestre un error de una dependencia de onelog. Se resuelve actualizando en su pom.xml la versión de plataforma a aquella con la que estamos trabajando en local.

 

Por otro lado, en el application.yml del keycloak-manager tenemos que modificar la propiedad onesaitplatform.apiKey. Para ello, abrimos un cliente de base de datos (como heidiSQL a través del comando ConfigDB.browser, por ejemplo) y visualizamos los datos de la tabla user-token dentro de la base de datos de Plataforma (onesaitplatform-config).

 

Copiamos el token del usuario platform_admin y lo sustituimos por el valor de la propiedad onesaitplatform.apiKey.

 

 

Del mismo modo, volvemos a la tabla y copiamos el token del usuario administrator. En Eclipse, abrimos el fichero sso_extras.properties del proyecto plugin-security-keycloak y sustituimos la propiedad api-key por el token que acabamos de copiar de la tabla.

 

En el application.yml de onesaitplatform-controlpanel, nos aseguramos que las propiedades onesaitplatform.authentication.oauth.enabled y onesaitplatform.authentication.oauth.osp-keycloak estén marcadas como true, pues estos valores permiten la habilitación de Keycloak como Identity Manager.

 

 

Una vez hecho esto vamos a levantar primero el control-panel y después el keycloak-manager, que se encargará de crear en Keycloak el Realm por defecto de OnesaitPlatform con los roles de plataforma. Una vez haya creado todo y si no ha dado ningún error, podemos cerrar ya el keycloak-manager.

Ahora accedemos a http://localhost:18000/controlpanel/ e ingresamos las credenciales de un usuario de Plataforma, ya podremos hacer login en el control panel utilizando Keycloak como Identity Manager en local y sin Docker.

Debugear las librerías Java

Para debugear debemos seleccionar la opción de remote debug desde el eclipse y haber levantado el keycloak en modo debug:

Linux/Mac ./bin/kc.sh start-dev --debug 8082
Windows bin/kc.bat start-dev --debug 8082

 

 

Crear un tema custom

https://www.keycloak.org/docs/latest/server_development/#creating-a-theme

Podemos partir de ese tema, renombrando la carpeta y copiándolo en la carpeta themes/ del directorio de keycloak.

Por ejemplo:

 

Y para seleccionar este tema, accederíamos a la consola http://localhost:8080/auth , nos logamos, y en el menú “Realm settings → Themes” seleccionamos el nuevo tema: