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 queremos personalizar la forma en la que se construye el token JWT que nos proporciona el Identity Manager de Plataforma (oauth-server).
Creación de proyecto maven
Para ello, nos crearemos un proyecto maven nuevo sobre el que desarrollaremos 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 desarrollamos nuestro TokenEnhancer, simplemente vamos a añadir una propiedad al token JWT:
Para que el servidor de Autorización utilice este enhancer, tenemos que hacer una clase de configuración que extienda de AuthorizationServerConfigurerAdapter. En esta clase, haremos un override del método que configura los endpoints del servidor.
En dicho método, añadiremos nuestro PluginTokenEnhancer a la cadena de enhancing existente:
De esta forma, se aplicará nuestro enhancer al final de la cadena, antes de devolvernos el token JWT.
Generar el JAR
JAR ligero
Siempre que NO utilicemos librerías externas a las que trae spring-boot usaremos este método.
Para poder utilizar el plugin, tendremos que empaquetar el proyecto maven en un JAR, bien con un mvn clean install o con mvn clean package
Una vez generado el JAR, deberemos 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 copiaremos el enlace al 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Í utilicemos librerías externas a las que trae spring-boot usaremos este método.
El proceso será parecido al anterior, pero tendremos 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, utilizaremos el comando mvn package
Hay que tener 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)
Deberemos indicar la URI del plugin o plugins en la variable de entorno PLUGIN_URI. Si es el último caso, deberemos separar las URIs por ';'
De esta forma, el Oauth Server al iniciarse, buscará los plugins y los cargará:
Test generación token JWT
Ahora generamos 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