...
Configuración de seguridad
Por otro lado, nos ¡Ojo! Esto será ligeramente diferente según la versión de Spring Boot que tengamos. Nos haremos una clase java para especificar la configuración de seguridad web, que estará también en es.um.atica.[APLICACION].config, y que se llamará SecurityConfig. Contendrá lo siguiente:es.um.atica.[APLICACION].config, y que se llamará SecurityConfig. Contendrá lo siguiente (en función de la versión de Spring Boot):
Versión 2.7.0 y posteriores
Desde la versión 2.7.0, WebSecurityConfigurerAdapter queda obsoleto, por lo que la clase será así:
| Bloque de código | ||
|---|---|---|
| ||
package es.um.atica.[APLICACION].config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import es.um.atica.fundewebjs.api.filters.FundeWebJSLoggingAuthorizationFilter;
@Configuration
public class SecurityConfig {
@Value( "${server.scopes}" )
private String[] serverScopes;
@Value( "${app.server.path}" )
private String apiPath;
@Bean
public FundeWebJSLoggingAuthorizationFilter loggingFilterBean() {
return new FundeWebJSLoggingAuthorizationFilter();
}
/**
* Proveedor de gestion de acceoss
*/
@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();
}
} |
Versión 2.6.11 y anteriores
| Bloque de código | ||
|---|---|---|
| ||
package es.um.atica.[APLICACION].config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import es.um.atica.fundewebjs.api.filters.FundeWebJSLoggingAuthorizationFilter;
@Configuration
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();
}
/**
* Proveedor de gestion de acceoss
*/
@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();
}
} |
Con esta configuración ya podemos tener nuestra aplicación funcionando sin problemas, pero si por algún motivo queremos poner https para hacer pruebas en local, en nuestro equipo, podemos generarnos un certificado autofirmado.
...
Utilizar https en local: generar certificado autofirmado
En vez de generar un certificado nuevo, podemos utilizar los que vienen aquí: certs.rar
...