...
| Bloque de código | ||||
|---|---|---|---|---|
| ||||
################# EnPara versiones de Spring-Boot anteriores a 2.7 public class SecurityConfig extends WebSecurityConfigurerAdapter { @Value( "${server.scopes}" ) private String[] serverScopes; @Value( "${app.server.path}" ) private String apiPath; @Bean public FundeWebJSLoggingAuthorizationFilter loggingFilterBean() { return new FundeWebJSLoggingAuthorizationFilter(); } @Override protected void configure( HttpSecurity http ) throws Exception { http.requestMatchers().antMatchers( "/public/**" ).and().requestMatchers().antMatchers( apiPath + "/**" ).and() .sessionManagement().sessionCreationPolicy( SessionCreationPolicy.STATELESS ) // configuro politica de sesion sin estado .and().cors() // Aniado configuracion CORS por defecto .and().csrf().disable().authorizeRequests().mvcMatchers( apiPath + "/public/**" ).permitAll() .mvcMatchers( apiPath + "/**" ).hasAnyAuthority( serverScopes ).anyRequest().authenticated().and() .addFilterAfter( loggingFilterBean(), BearerTokenAuthenticationFilter.class ) .oauth2ResourceServer().jwt(); } } ############### O bien: ############### En versiones de Spring-Boot 2.7.X public class SecurityConfig { @Value( "${server.scopes}" ) private String[] serverScopes; @Value( "${app.server.path}" ) private String apiPath; @Bean public FundeWebJSLoggingAuthorizationFilter loggingFilterBean() { return new FundeWebJSLoggingAuthorizationFilter(); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.requestMatchers().antMatchers( "/public/**" ).and().requestMatchers().antMatchers( apiPath + "/**" ).and() .sessionManagement().sessionCreationPolicy( SessionCreationPolicy.STATELESS ) // configuro politica de sesion sin estado .and().cors() // Aniado configuracion CORS por defecto .and().csrf().disable().authorizeRequests().mvcMatchers( apiPath + "/public/**" ).permitAll() .mvcMatchers( apiPath + "/**" ).hasAnyAuthority( serverScopes ).anyRequest().authenticated().and() .addFilterAfter( loggingFilterBean(), BearerTokenAuthenticationFilter.class ) .oauth2ResourceServer().jwt(); return http.build(); } } |
a. Hay que eliminar dicha clase SecurityConfig.
| Info |
|---|
La configuración de seguridad estándar se realizará, a partir de ahora, en la clase FundeWebJSSecurityConfig incluida en la librería fundewebjs-spring-boot-starter. |
...
Una vez realizados todos los cambios, hay que comprobar:
- que la aplicación despliega en local correctamente.
- que los tests se siguen pasando con normalidad.
- probar que los endpoints siguen funcionando, con el foco en la correcta securización con los tokens oauth.
- mergear a desarrollo y comprobar que la imagen nueva ha desplegado y que todo funciona correctamente.
...
Cambios Spring-Boot 2.7.X
Como se ha mencionado anteriormente, el parent FundeWebJS se ha desarrollado con la versión de Spring-Boot 2.7.10.
Si nuestro proyecto estaba desarrollado con versiones anteriores de Spring-Boot, es posible que haya que realizar modificaciones en nuestro código para adaptarlo a 2.7.10.
En la sección de Referencias se dejan enlaces a las guías de migración de cada versión de Spring-Boot.
Algunos cambios conocidos en aplicaciones existentes:
- SecurityConfig: La clase WebSecurityConfigurerAdapter está deprecada. Hay que eliminarla y crear la configuración con SecurityFilterChain.
Junit: La versión de Junit se ha actualizado de 4 a 5. Algunas clases empleadas en los tests pueden haberse modificado. Se pueden buscar las equivalentes en Junit 5 o seguir manteniendo Junit 4 con:
| Bloque de código |
|---|
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency> |
@EntityScan ahora soporta el atributo basePackages para especificar el escaneado de entidades en diferentes paquetes.
... esta lista se irá incrementando conforme se vayan descubriendo modificaciones....
Info Ver la sección de Referencias para ampliar información.
...
Dudas y soporte
Si se tiene alguna duda o problema siguiendo esta página, poner Jira a:
...