| 
					
				 | 
			
			
				@@ -17,6 +17,9 @@ package org.springframework.security.web.server.authorization; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.security.authorization.ReactiveAuthorizationManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.security.core.context.ReactiveSecurityContextHolder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.security.core.context.SecurityContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.security.core.context.SecurityContextImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.web.server.ServerWebExchange; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.web.server.WebFilter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.web.server.WebFilterChain; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -37,7 +40,9 @@ public class AuthorizationWebFilter implements WebFilter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return accessDecisionManager.verify(exchange.getPrincipal(), exchange) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			.switchIfEmpty( Mono.defer(() -> chain.filter(exchange)) ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return ReactiveSecurityContextHolder.getContext() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.map(SecurityContext::getAuthentication) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.as( authentication -> this.accessDecisionManager.verify(authentication, exchange)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.switchIfEmpty(chain.filter(exchange)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |