...
Para ello hay que realizar la siguiente configuración:
Guía detallada
1. Configurar dependencia en pom.xml
...
| Advertencia |
|---|
Si alguna de las configuraciones ya existe, no hace falta volver a declararla. |
- Añadir property para la versión:
| Bloque de código | ||
|---|---|---|
| ||
<properties>
...
<fdwjs.version>[1.0.0,)</fdwjs.version>
...
</properties>
|
- Añadir dependencia:
| Bloque de código | ||
|---|---|---|
| ||
<dependency>
<groupId>es.um.atica.fundewebjs.fundewebjs-api</groupId>
<artifactId>fundewebjs-api-components</artifactId>
<version>${fdwjs.version}</version>
</dependency> |
- Añadir repositorio maven:
| Bloque de código | ||
|---|---|---|
| ||
<repositories>
...
<repository>
<id>fundewebjs.archiva.atica.umu.es</id>
<name>ATICA - UMU Repository - FundeWebJS</name>
<url>https://archiva.um.es/archiva/repository/FundeWebJS/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
...
</repositories> |
...
2. Cambios en Clase Application
...
Para que Spring-Boot localice los componentes declarados en la librería del paso anterior, es necesario indicarle el paquete que ha de escanear.
Para ello hay que modificar la clase Application y añadir el parámetro scanBasePackages a la anotación @SpringBootApplication:
Ejemplo:
| Bloque de código | ||
|---|---|---|
| ||
@SpringBootApplication( scanBasePackages = {
"es.um.atica.[PAQUETE_BASE_APLICACION]", "es.um.atica.fundewebjs"
} )
public class SampleApplication { |
...
3. Configurar filtro
Una vez configurada la dependencia, es necesario configurar el filtro que añade los usuarios a los logs.
En el fichero SecurityConfig (si se ha seguido la página Configuración de proyectos Spring Boot para FundeWebJs) :
- Inyectar el filtro FundeWebJSLoggingAuthorizationFilter :
| Bloque de código | ||
|---|---|---|
| ||
@Bean
public FundeWebJSLoggingAuthorizationFilter loggingFilterBean() {
return new FundeWebJSLoggingAuthorizationFilter();
} |
- Añadir el filtro recién inyectado a la configuración de seguridad para que se ejecute después del filtro BearerTokenAuthenticactionFilter:
| Bloque de código | ||
|---|---|---|
| ||
...
.addFilterAfter( loggingFilterBean(), BearerTokenAuthenticationFilter.class )
... |
Ejemplo de método configure completo:
| Bloque de código | ||
|---|---|---|
| ||
@Override
protected void configure( HttpSecurity http ) throws Exception {
http.requestMatchers().antMatchers( "/public/**" ).and().requestMatchers().antMatchers( apiPath + "/**" ).and()
.sessionManagement().sessionCreationPolicy( SessionCreationPolicy.STATELESS )
.and().cors()
.and().csrf().disable().authorizeRequests().mvcMatchers( apiPath + "/public/**" ).permitAll()
.mvcMatchers( apiPath + "/**" ).hasAnyAuthority( serverScopes )
.anyRequest().authenticated().and()
.addFilterAfter( loggingFilterBean(), BearerTokenAuthenticationFilter.class )
.oauth2ResourceServer().jwt();
} |
| Nota |
|---|
Depende del momento de implementación del Login con Oauth en nuestra aplicación, es posible que la configuración deba realizarse en el fichero SecurityConfigOauth. |
Puede verse un ejemplo de esta configuración en el proyecto API Base.
...
Resultado
Una vez realizada esta configuración, todos los logs que se pinten en nuestros servicios, cuando se haga uso de un Token Personificado, contendrán los siguientes campos:
...