| 
					
				 | 
			
			
				@@ -21,11 +21,10 @@ You can do so with the following configuration: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -33,6 +32,7 @@ public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.sameOrigin() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -53,8 +53,9 @@ public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -63,6 +64,7 @@ class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -79,11 +81,10 @@ If you use Spring Security's configuration, the following adds only xref:feature 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -91,6 +92,7 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				.defaultsDisabled() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				.cacheControl(withDefaults()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -111,8 +113,9 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -122,6 +125,7 @@ class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -135,14 +139,14 @@ If necessary, you can disable all of the HTTP Security response headers with the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers.disable()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -161,14 +165,16 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 disable() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -194,16 +200,16 @@ If necessary, you can also disable Spring Security's cache control HTTP response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Configuration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				.cacheControl(cache -> cache.disable()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -224,9 +230,10 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 cacheControl { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -234,6 +241,7 @@ class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -252,16 +260,16 @@ However, you can disable it: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Configuration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				.contentTypeOptions(contentTypeOptions -> contentTypeOptions.disable()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -282,9 +290,10 @@ public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 contentTypeOptions { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -292,6 +301,7 @@ class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -310,11 +320,10 @@ The following example explicitly provides HSTS: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -324,6 +333,7 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.maxAgeInSeconds(31536000) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -347,9 +357,10 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 httpStrictTransportSecurity { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -359,6 +370,7 @@ class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -376,11 +388,10 @@ You can enable HPKP headers with the following configuration: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -390,6 +401,7 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.addSha256Pins("d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM=", "E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -416,9 +428,10 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 httpPublicKeyPinning { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -429,6 +442,7 @@ class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -447,11 +461,10 @@ For example, the following configuration specifies that Spring Security should n 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -459,6 +472,7 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.sameOrigin() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -481,9 +495,10 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 frameOptions { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -491,6 +506,7 @@ class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -509,11 +525,10 @@ For example, the following configuration specifies that Spring Security should n 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -521,6 +536,7 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.block(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -541,9 +557,10 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -552,6 +569,7 @@ class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -581,11 +599,10 @@ Given the preceding security policy, you can enable the CSP header: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -593,6 +610,7 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.policyDirectives("script-src 'self' https://trustedscripts.example.com; object-src https://trustedplugins.example.com; report-uri /csp-report-endpoint/") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -614,9 +632,10 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -625,6 +644,7 @@ class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -638,11 +658,10 @@ To enable the CSP `report-only` header, provide the following configuration: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -651,6 +670,7 @@ public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.reportOnly() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -673,9 +693,10 @@ public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -685,6 +706,7 @@ class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -702,11 +724,10 @@ You can enable the Referrer Policy header by using the configuration: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -714,6 +735,7 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.policy(ReferrerPolicy.SAME_ORIGIN) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -734,9 +756,10 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -745,6 +768,7 @@ class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -772,16 +796,16 @@ You can enable the preceding feature policy header by using the following config 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				.featurePolicy("geolocation 'self'") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -802,15 +826,17 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 featurePolicy("geolocation 'self'") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -838,11 +864,10 @@ You can enable the preceding permissions policy header using the following confi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -850,6 +875,7 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					.policy("geolocation=(self)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -870,9 +896,10 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -881,6 +908,7 @@ class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -907,16 +935,16 @@ You can send the preceding header on log out with the following configuration: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.logout((logout) -> logout 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .addLogoutHandler(new HeaderWriterLogoutHandler(new ClearSiteDataHeaderWriter(CACHE, COOKIES))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -925,15 +953,17 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             logout { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 addLogoutHandler(HeaderWriterLogoutHandler(ClearSiteDataHeaderWriter(CACHE, COOKIES))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -962,16 +992,16 @@ Given the preceding header, you could add the headers to the response by using t 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				.addHeaderWriter(new StaticHeadersWriter("X-Custom-Security-Header","header-value")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -992,15 +1022,17 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 addHeaderWriter(StaticHeadersWriter("X-Custom-Security-Header","header-value")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1019,16 +1051,16 @@ If you wanted to explicitly configure <<servlet-headers-frame-options>>, you cou 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			.headers(headers -> headers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				.addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsMode.SAMEORIGIN)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1055,15 +1087,17 @@ See https://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         http { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             headers { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 addHeaderWriter(XFrameOptionsHeaderWriter(XFrameOptionsMode.SAMEORIGIN)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1084,11 +1118,10 @@ The following configuration example uses `DelegatingRequestMatcherHeaderWriter`: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class WebSecurityConfig extends 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WebSecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	protected void configure(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		RequestMatcher matcher = new AntPathRequestMatcher("/login"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		DelegatingRequestMatcherHeaderWriter headerWriter = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			new DelegatingRequestMatcherHeaderWriter(matcher,new XFrameOptionsHeaderWriter()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1098,6 +1131,7 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				.frameOptions(frameOptions -> frameOptions.disable()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				.addHeaderWriter(headerWriter) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1131,9 +1165,10 @@ WebSecurityConfigurerAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @EnableWebSecurity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class SecurityConfig { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    override fun configure(http: HttpSecurity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    open fun filterChain(http: HttpSecurity): SecurityFilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         val matcher: RequestMatcher = AntPathRequestMatcher("/login") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         val headerWriter = DelegatingRequestMatcherHeaderWriter(matcher, XFrameOptionsHeaderWriter()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        http { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1144,6 +1179,7 @@ class SecurityConfig : WebSecurityConfigurerAdapter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 addHeaderWriter(headerWriter) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return http.build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 |