¿Cómo crear Plugins para Módulos de Plataforma?

En esta guía vamos explicar como se desarrollan plugins que pueda utilizar un módulo de plataforma con un ejemplo concreto.

Esta funcionalidad está disponible sólo en la versión Enterprise de Plataforma, a partir de la versión 1.6.2-empire.

Desarrollo de un token enhancer para Identity Manager

Supongamos que quieres personalizar la forma en la que se construye el token JWT que proporciona el Identity Manager de Plataforma (oauth-server).

Creación de proyecto maven

Para ello, crea un proyecto maven nuevo sobre el que desarrollarás la funcionalidad propuesta.

Para que el plugin sea 100% compatible con los módulos de plataforma, es necesario usar la version 1.5.9.RELEASE de Spring Boot, y la version 1.8 de Java.

Desarrollando la funcionalidad

Lo primero es desarrollar tu TokenEnhancer. Simplemente vas a añadir una propiedad al token JWT:

Para que el servidor de Autorización utilice este enhancer, tienes que hacer una clase de configuración que extienda de AuthorizationServerConfigurerAdapter. En esta clase, haz un override del método que configura los endpoints del servidor.

En dicho método, añade tu PluginTokenEnhancer a la cadena de enhancing existente:

 

De esta forma, se aplicará tu enhancer al final de la cadena, antes de devolver el token JWT.

 

Generar el JAR

JAR ligero

Siempre que NO utilices librerías externas a las que trae spring-boot, debes usar este método.

Para poder utilizar el plugin, tendrás que empaquetar el proyecto maven en un JAR, bien con un mvn clean install o con mvn clean package.

Una vez generado el JAR, debes subirlo a un servidor accesible desde Internet, o al menos desde la máquina donde está instalada la plataforma.

Esto puede ser desde un nexus, donde copiarás el enlace al jar:

https://nexus.onesaitplatform.com/nexus/service/local/repositories/releases/content/com/minsait/onesait/platform/onesaitplatform-base-plugin/1.0.0/onesaitplatform-base-plugin-1.0.0.jar

Hasta el propio repositorio de binarios de la plataforma:

Nótese que el JAR tiene que ser público sea cual sea la fuente, ya que el módulo de plataforma tiene que tener acceso sin ningún tipo de autenticación.

https://development.onesaitplatform.com/controlpanel/files/5e71fb0e7ec58a000bf6f966

FAT JAR

Siempre que SÍ utilices librerías externas a las que trae spring-boot, debes usar este método.

El proceso será parecido al anterior, pero tienes que añadir un plugin de maven al pom.xml:

<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>

Para generar el plugin, utiliza el comando mvn package.

Ten en cuenta que esto generará un JAR con todas las dependencias, y por tanto aumentará considerablemente el tamaño del plugin.

 

Indicar al módulo OAuth Server la URI del plugin(s)

Debes indicar la URI del plugin o plugins en la variable de entorno PLUGIN_URI. Si es el último caso, deberás separar las URIs por ';'

De esta forma, el OAuth Server al iniciarse, buscará los plugins y los cargará:

Test generación token JWT

Ahora generarás el token JWT con el plugin cargado, para comprobar que se está usando la funcionalidad añadida a la cadena de enhancing de OAuth:

 

Recursos

 



(c) 2020 Indra Soluciones Tecnologías de la Información, S.L.U.