| 
					
				 | 
			
			
				@@ -14,19 +14,22 @@ It defines extension points that let you customize the pre-processing, main proc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	authorizationServerConfigurer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		.authorizationEndpoint(authorizationEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			authorizationEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authorizationRequestConverter(authorizationRequestConverter)   <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authorizationRequestConverters(authorizationRequestConvertersConsumer) <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authenticationProviders(authenticationProvidersConsumer)   <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authorizationResponseHandler(authorizationResponseHandler) <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.consentPage("/oauth2/v1/authorize")    <7> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OAuth2AuthorizationServerConfigurer.authorizationServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.with(authorizationServerConfigurer, (authorizationServer) -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			authorizationServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.authorizationEndpoint(authorizationEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					authorizationEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        				.authorizationRequestConverter(authorizationRequestConverter)   <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authorizationRequestConverters(authorizationRequestConvertersConsumer) <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authenticationProviders(authenticationProvidersConsumer)   <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authorizationResponseHandler(authorizationResponseHandler) <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .consentPage("/oauth2/v1/authorize")    <7> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -74,13 +77,16 @@ The following example shows how to configure `OAuth2AuthorizationCodeRequestAuth 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	authorizationServerConfigurer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		.authorizationEndpoint(authorizationEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			authorizationEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authenticationProviders(configureAuthenticationValidator()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OAuth2AuthorizationServerConfigurer.authorizationServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.with(authorizationServerConfigurer, (authorizationServer) -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			authorizationServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.authorizationEndpoint(authorizationEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					authorizationEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authenticationProviders(configureAuthenticationValidator()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -133,19 +139,22 @@ It defines extension points that let you customize the pre-processing, main proc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	authorizationServerConfigurer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		.deviceAuthorizationEndpoint(deviceAuthorizationEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			deviceAuthorizationEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.deviceAuthorizationRequestConverter(deviceAuthorizationRequestConverter) <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.deviceAuthorizationRequestConverters(deviceAuthorizationRequestConvertersConsumer) <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authenticationProviders(authenticationProvidersConsumer) <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.deviceAuthorizationResponseHandler(deviceAuthorizationResponseHandler) <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.verificationUri("/oauth2/v1/device_verification") <7> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OAuth2AuthorizationServerConfigurer.authorizationServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.with(authorizationServerConfigurer, (authorizationServer) -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			authorizationServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.deviceAuthorizationEndpoint(deviceAuthorizationEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    deviceAuthorizationEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .deviceAuthorizationRequestConverter(deviceAuthorizationRequestConverter)   <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .deviceAuthorizationRequestConverters(deviceAuthorizationRequestConvertersConsumer) <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authenticationProviders(authenticationProvidersConsumer)   <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .deviceAuthorizationResponseHandler(deviceAuthorizationResponseHandler) <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .verificationUri("/oauth2/v1/device_verification")  <7> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -182,19 +191,22 @@ It defines extension points that let you customize the pre-processing, main proc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	authorizationServerConfigurer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		.deviceVerificationEndpoint(deviceVerificationEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			deviceVerificationEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.deviceVerificationRequestConverter(deviceVerificationRequestConverter) <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.deviceVerificationRequestConverters(deviceVerificationRequestConvertersConsumer) <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authenticationProviders(authenticationProvidersConsumer) <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.deviceVerificationResponseHandler(deviceVerificationResponseHandler) <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.consentPage("/oauth2/v1/consent") <7> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OAuth2AuthorizationServerConfigurer.authorizationServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.with(authorizationServerConfigurer, (authorizationServer) -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			authorizationServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.deviceVerificationEndpoint(deviceVerificationEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    deviceVerificationEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .deviceVerificationRequestConverter(deviceVerificationRequestConverter) <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .deviceVerificationRequestConverters(deviceVerificationRequestConvertersConsumer)   <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authenticationProviders(authenticationProvidersConsumer)   <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .deviceVerificationResponseHandler(deviceVerificationResponseHandler)   <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .consentPage("/oauth2/v1/consent")  <7> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -230,18 +242,21 @@ It defines extension points that let you customize the pre-processing, main proc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	authorizationServerConfigurer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		.tokenEndpoint(tokenEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			tokenEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.accessTokenRequestConverter(accessTokenRequestConverter)   <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.accessTokenRequestConverters(accessTokenRequestConvertersConsumer) <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authenticationProviders(authenticationProvidersConsumer)   <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.accessTokenResponseHandler(accessTokenResponseHandler) <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OAuth2AuthorizationServerConfigurer.authorizationServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.with(authorizationServerConfigurer, (authorizationServer) -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			authorizationServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.tokenEndpoint(tokenEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tokenEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .accessTokenRequestConverter(accessTokenRequestConverter)   <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .accessTokenRequestConverters(accessTokenRequestConvertersConsumer) <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authenticationProviders(authenticationProvidersConsumer)   <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .accessTokenResponseHandler(accessTokenResponseHandler) <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -288,13 +303,16 @@ The following example shows how to configure `OAuth2ClientCredentialsAuthenticat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	authorizationServerConfigurer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		.tokenEndpoint(tokenEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			tokenEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authenticationProviders(configureAuthenticationValidator()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OAuth2AuthorizationServerConfigurer.authorizationServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.with(authorizationServerConfigurer, (authorizationServer) -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			authorizationServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.tokenEndpoint(tokenEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tokenEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authenticationProviders(configureAuthenticationValidator()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -344,18 +362,21 @@ It defines extension points that let you customize the pre-processing, main proc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	authorizationServerConfigurer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		.tokenIntrospectionEndpoint(tokenIntrospectionEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			tokenIntrospectionEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.introspectionRequestConverter(introspectionRequestConverter)   <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.introspectionRequestConverters(introspectionRequestConvertersConsumer) <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authenticationProviders(authenticationProvidersConsumer)   <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.introspectionResponseHandler(introspectionResponseHandler) <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OAuth2AuthorizationServerConfigurer.authorizationServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.with(authorizationServerConfigurer, (authorizationServer) -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			authorizationServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.tokenIntrospectionEndpoint(tokenIntrospectionEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tokenIntrospectionEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .introspectionRequestConverter(introspectionRequestConverter)   <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .introspectionRequestConverters(introspectionRequestConvertersConsumer) <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authenticationProviders(authenticationProvidersConsumer)   <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .introspectionResponseHandler(introspectionResponseHandler) <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -391,18 +412,21 @@ It defines extension points that let you customize the pre-processing, main proc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	authorizationServerConfigurer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		.tokenRevocationEndpoint(tokenRevocationEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			tokenRevocationEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.revocationRequestConverter(revocationRequestConverter) <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.revocationRequestConverters(revocationRequestConvertersConsumer)   <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authenticationProviders(authenticationProvidersConsumer)   <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.revocationResponseHandler(revocationResponseHandler)   <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OAuth2AuthorizationServerConfigurer.authorizationServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.with(authorizationServerConfigurer, (authorizationServer) -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			authorizationServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.tokenRevocationEndpoint(tokenRevocationEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tokenRevocationEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .revocationRequestConverter(revocationRequestConverter) <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .revocationRequestConverters(revocationRequestConvertersConsumer)   <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authenticationProviders(authenticationProvidersConsumer)   <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .revocationResponseHandler(revocationResponseHandler)   <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -438,13 +462,17 @@ It defines an extension point that lets you customize the https://datatracker.ie 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	authorizationServerConfigurer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		.authorizationServerMetadataEndpoint(authorizationServerMetadataEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			authorizationServerMetadataEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.authorizationServerMetadataCustomizer(authorizationServerMetadataCustomizer));   <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OAuth2AuthorizationServerConfigurer.authorizationServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.with(authorizationServerConfigurer, (authorizationServer) -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			authorizationServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.authorizationServerMetadataEndpoint(authorizationServerMetadataEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    authorizationServerMetadataEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .authorizationServerMetadataCustomizer(authorizationServerMetadataCustomizer)   <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -478,16 +506,19 @@ It defines an extension point that lets you customize the https://openid.net/spe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	authorizationServerConfigurer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		.oidc(oidc -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			oidc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.providerConfigurationEndpoint(providerConfigurationEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					providerConfigurationEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.providerConfigurationCustomizer(providerConfigurationCustomizer)   <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OAuth2AuthorizationServerConfigurer.authorizationServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.with(authorizationServerConfigurer, (authorizationServer) -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			authorizationServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .oidc(oidc -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    oidc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .providerConfigurationEndpoint(providerConfigurationEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            providerConfigurationEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .providerConfigurationCustomizer(providerConfigurationCustomizer)   <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -511,21 +542,24 @@ It defines extension points that let you customize the pre-processing, main proc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	authorizationServerConfigurer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		.oidc(oidc -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			oidc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.logoutEndpoint(logoutEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					logoutEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.logoutRequestConverter(logoutRequestConverter) <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.logoutRequestConverters(logoutRequestConvertersConsumer)   <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.authenticationProviders(authenticationProvidersConsumer)   <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.logoutResponseHandler(logoutResponseHandler)   <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OAuth2AuthorizationServerConfigurer.authorizationServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.with(authorizationServerConfigurer, (authorizationServer) -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			authorizationServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .oidc(oidc -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    oidc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .logoutEndpoint(logoutEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            logoutEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .logoutRequestConverter(logoutRequestConverter) <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .logoutRequestConverters(logoutRequestConvertersConsumer)   <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .authenticationProviders(authenticationProvidersConsumer)   <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .logoutResponseHandler(logoutResponseHandler)   <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -576,14 +610,19 @@ The following example shows how to configure `OidcLogoutAuthenticationProvider` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	authorizationServerConfigurer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		.oidc(oidc -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			oidc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.logoutEndpoint(logoutEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					logoutEndpoint.authenticationProviders(configureAuthenticationValidator())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OAuth2AuthorizationServerConfigurer.authorizationServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.with(authorizationServerConfigurer, (authorizationServer) -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			authorizationServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .oidc(oidc -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    oidc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .logoutEndpoint(logoutEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            logoutEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .authenticationProviders(configureAuthenticationValidator()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -626,22 +665,25 @@ It defines extension points that let you customize the pre-processing, main proc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	authorizationServerConfigurer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		.oidc(oidc -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			oidc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.userInfoEndpoint(userInfoEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					userInfoEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.userInfoRequestConverter(userInfoRequestConverter) <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.userInfoRequestConverters(userInfoRequestConvertersConsumer) <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.authenticationProviders(authenticationProvidersConsumer) <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.userInfoResponseHandler(userInfoResponseHandler) <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.userInfoMapper(userInfoMapper) <7> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OAuth2AuthorizationServerConfigurer.authorizationServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.with(authorizationServerConfigurer, (authorizationServer) -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			authorizationServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .oidc(oidc -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    oidc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .userInfoEndpoint(userInfoEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            userInfoEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .userInfoRequestConverter(userInfoRequestConverter) <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .userInfoRequestConverters(userInfoRequestConvertersConsumer)   <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .authenticationProviders(authenticationProvidersConsumer)   <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .userInfoResponseHandler(userInfoResponseHandler)   <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .userInfoMapper(userInfoMapper) <7> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -669,31 +711,9 @@ public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity h 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 You can customize the ID Token by providing an xref:core-model-components.adoc#oauth2-token-customizer[`OAuth2TokenCustomizer<JwtEncodingContext>`] `@Bean`. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 The OpenID Connect 1.0 UserInfo endpoint is an OAuth2 protected resource, which *REQUIRES* an access token to be sent as a bearer token in the https://openid.net/specs/openid-connect-core-1_0.html#UserInfoRequest[UserInfo request]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-The following example shows how to enable the OAuth2 resource server configuration: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-[source,java] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				----- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.oauth2ResourceServer(resourceServer -> resourceServer.jwt(Customizer.withDefaults())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public JwtDecoder jwtDecoder(JWKSource<SecurityContext> jwkSource) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	return OAuth2AuthorizationServerConfiguration.jwtDecoder(jwkSource); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				----- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [NOTE] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-A `JwtDecoder` `@Bean` is *REQUIRED* for the OpenID Connect 1.0 UserInfo endpoint. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+OAuth2 resource server support is autoconfigured, however, a `JwtDecoder` `@Bean` is *REQUIRED* for the OpenID Connect 1.0 UserInfo endpoint. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [TIP] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 The guide xref:guides/how-to-userinfo.adoc[How-to: Customize the OpenID Connect 1.0 UserInfo response] contains examples of customizing the UserInfo endpoint. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -711,21 +731,24 @@ It defines extension points that let you customize the pre-processing, main proc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	authorizationServerConfigurer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		.oidc(oidc -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			oidc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				.clientRegistrationEndpoint(clientRegistrationEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					clientRegistrationEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.clientRegistrationRequestConverter(clientRegistrationRequestConverter) <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.clientRegistrationRequestConverters(clientRegistrationRequestConvertersConsumers) <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.authenticationProviders(authenticationProvidersConsumer) <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.clientRegistrationResponseHandler(clientRegistrationResponseHandler) <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						.errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OAuth2AuthorizationServerConfigurer.authorizationServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	http 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.with(authorizationServerConfigurer, (authorizationServer) -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			authorizationServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .oidc(oidc -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    oidc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .clientRegistrationEndpoint(clientRegistrationEndpoint -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            clientRegistrationEndpoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .clientRegistrationRequestConverter(clientRegistrationRequestConverter) <1> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .clientRegistrationRequestConverters(clientRegistrationRequestConvertersConsumers)  <2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .authenticationProvider(authenticationProvider) <3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .authenticationProviders(authenticationProvidersConsumer)   <4> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .clientRegistrationResponseHandler(clientRegistrationResponseHandler)   <5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .errorResponseHandler(errorResponseHandler) <6> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -756,34 +779,11 @@ The OpenID Connect 1.0 Client Registration endpoint is disabled by default becau 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 The OpenID Connect 1.0 Client Registration endpoint is an https://openid.net/specs/openid-connect-registration-1_0.html#ClientRegistration[OAuth2 protected resource], which *REQUIRES* an access token to be sent as a bearer token in the Client Registration (or Client Read) request. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+[NOTE] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+OAuth2 resource server support is autoconfigured, however, a `JwtDecoder` `@Bean` is *REQUIRED* for the OpenID Connect 1.0 Client Registration endpoint. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [IMPORTANT] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 The access token in a Client Registration request *REQUIRES* the OAuth2 scope `client.create`. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [IMPORTANT] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 The access token in a Client Read request *REQUIRES* the OAuth2 scope `client.read`. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-The following example shows how to enable the OAuth2 resource server configuration: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-[source,java] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				----- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		new OAuth2AuthorizationServerConfigurer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.apply(authorizationServerConfigurer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http.oauth2ResourceServer(resourceServer -> resourceServer.jwt(Customizer.withDefaults())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	return http.build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@Bean 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public JwtDecoder jwtDecoder(JWKSource<SecurityContext> jwkSource) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	return OAuth2AuthorizationServerConfiguration.jwtDecoder(jwkSource); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				----- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-[NOTE] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-A `JwtDecoder` `@Bean` is *REQUIRED* for the OpenID Connect 1.0 Client Registration endpoint. 
			 |