Spring Boot – Camel – Keycloak

En este tutorial vamos a crear una aplicación con Spring Boot – Camel y asegurar sus recursos usando Keycloak.

Conocimientos básicos

Spring boot

Es un framework open-source que provee una forma fácil y rápida de iniciar, configurar y correr aplicaciones standalone basadas en spring framework.

https://spring.io

Apache camel

Traducido del sitio oficial, camel es un framework de integración de código abierto que permite integrar fácil y rápidamente varios sistemas que consumen o producen datos.

https://camel.apache.org/

Keycloak

Traducido de su sitio de github, es una solución de código abierto de manejo de identidades y accesos para modernas aplicaciones y servicios.

https://www.keycloak.org/

Requisitos

  • Apache maven 3.8.6
  • Java Openjdk 11
  • Servidor keycloak, si no dispone de uno puede seguir el siguiente tutorial

https://www.keycloak.org/getting-started/getting-started-docker

Creando la aplicación

Crear la aplicación usando el arquetipo camel-archetype-spring-boot:

Crear endpoint rest

En pom.xml agregar la dependencia:

En la clase MySpringBootRouter agregar la configuración rest:

Escuchar en el puerto 8081. En el archivo application.properties agregar:

Asegurar la aplicación

Configurar las dependencias en pom.xml. 

Agregar al pom.xml las dependencias de spring security 

En archivo pom.xml dependencyManagement/dependencies agregar

Crear la clase WebSecurityConfiguration

  • Si no realizamos una configuración explícita, los recursos rest se exponen dentro del contexto camel.
  • Para el ejemplo el rol que tiene acceso a la ejecución del recurso es manage-account.

Configurar la lectura del token

En el archivo application.properties agregar lo siguiente:

  • keycloak.realm: espacio de trabajo donde se encuentra registrado el usuario 
  • keycloak.resource: nombre del recurso donde se desea buscar los roles del usuario dentro del token
Probar el endpoint

Generar un access token para un usuario en el servidor keycloak.

  • Hacer login en el servidor keycloak, ejemplo:

http://localhost:8080/realms/myrealm/account

  • Obtener el token
Código Fuente

https://dev.azure.com/pablolopez0339/public/_git/camel-springboot-keycloak

Referencias
Comenta