Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

Para ello hay que realizar la siguiente configuración:

Guía detallada


Info

Con la configuración actual de las APIs, con el parent fundewebjs-api-parent (ver Creación y estructura de proyecto SpringBootMigración de APIs a Parent FundeWebJS).

No es necesario realizar ninguna configuración de librerías en pom.xml.


Expandir
titleVer configuración antigua.

1.  Configurar dependencia en pom.xml


Advertencia

Si alguna de las configuraciones ya existe, no hace falta volver a declararla. En este caso, si en local teníamos descargada una versión antigua, haría falta hacer un maven update project para actualizar la librería.


 - Añadir property para la versión:

Bloque de código
languagexml
<properties>
...
	<fdwjs.version>[1.0.0,)</fdwjs.version>
...
</properties>


- Añadir dependencia:

Bloque de código
languagexml
	<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
languagexml
<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
languagejava
@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
languagejava
@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
languagejava
 ...
 .addFilterAfter( loggingFilterBean(), BearerTokenAuthenticationFilter.class )
 ...

Ejemplo de método configure completo:

Bloque de código
languagejava
@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.
El filtro debe añadirse siempre antes de la configuración oauth2ResourceServer().jwt(), independientemente del fichero en el que esté.



Puede verse un ejemplo de esta configuración en el proyecto API Base.

...