Versiones comparadas

Clave

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

...

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
languagejava
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
languagejava
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();
	}

}

...

Utilizar https en local: generar certificado autofirmado

En vez de generar un certificado nuevo, podemos utilizar los que vienen aquí: certs.rar

...