|  | @@ -1,8 +1,5 @@
 | 
	
		
			
				|  |  |  [[core-model-components]]
 | 
	
		
			
				|  |  |  = Core Model / Components
 | 
	
		
			
				|  |  | -:toc: left
 | 
	
		
			
				|  |  | -:toclevels: 1
 | 
	
		
			
				|  |  | -:spring-security-reference-base-url: https://docs.spring.io/spring-security/reference
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  [[registered-client]]
 | 
	
		
			
				|  |  |  == RegisteredClient
 | 
	
	
		
			
				|  | @@ -136,6 +133,9 @@ public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity h
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  ----
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +[NOTE]
 | 
	
		
			
				|  |  | +The `OAuth2AuthorizationServerConfigurer` is useful when applying multiple configuration options simultaneously.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  [[oauth2-authorization]]
 | 
	
		
			
				|  |  |  == OAuth2Authorization
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -144,13 +144,13 @@ An `OAuth2Authorization` is a representation of an OAuth2 authorization, which h
 | 
	
		
			
				|  |  |  [TIP]
 | 
	
		
			
				|  |  |  The corresponding authorization model in Spring Security's OAuth2 Client support is {spring-security-reference-base-url}/servlet/oauth2/client/core.html#oauth2Client-authorized-client[OAuth2AuthorizedClient].
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -After the successful completion of an authorization grant flow, an `OAuth2Authorization` is created and associates an `OAuth2AccessToken`, an (optional) `OAuth2RefreshToken`, and additional state specific to the executed authorization grant type.
 | 
	
		
			
				|  |  | +After the successful completion of an authorization grant flow, an `OAuth2Authorization` is created and associates an {spring-security-api-base-url}/org/springframework/security/oauth2/core/OAuth2AccessToken.html[`OAuth2AccessToken`], an (optional) {spring-security-api-base-url}/org/springframework/security/oauth2/core/OAuth2RefreshToken.html[`OAuth2RefreshToken`], and additional state specific to the executed authorization grant type.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -The `OAuth2Token` instances associated with an `OAuth2Authorization` vary, depending on the authorization grant type.
 | 
	
		
			
				|  |  | +The {spring-security-api-base-url}/org/springframework/security/oauth2/core/OAuth2Token.html[`OAuth2Token`] instances associated with an `OAuth2Authorization` vary, depending on the authorization grant type.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  For the OAuth2 https://datatracker.ietf.org/doc/html/rfc6749#section-4.1[authorization_code grant], an `OAuth2AuthorizationCode`, an `OAuth2AccessToken`, and an (optional) `OAuth2RefreshToken` are associated.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -For the OpenID Connect 1.0 https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth[authorization_code grant], an `OAuth2AuthorizationCode`, an `OidcIdToken`, an `OAuth2AccessToken`, and an (optional) `OAuth2RefreshToken` are associated.
 | 
	
		
			
				|  |  | +For the OpenID Connect 1.0 https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth[authorization_code grant], an `OAuth2AuthorizationCode`, an {spring-security-api-base-url}/org/springframework/security/oauth2/core/oidc/OidcIdToken.html[`OidcIdToken`], an `OAuth2AccessToken`, and an (optional) `OAuth2RefreshToken` are associated.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  For the OAuth2 https://datatracker.ietf.org/doc/html/rfc6749#section-4.4[client_credentials grant], only an `OAuth2AccessToken` is associated.
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -226,6 +226,9 @@ public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity h
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  ----
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +[NOTE]
 | 
	
		
			
				|  |  | +The `OAuth2AuthorizationServerConfigurer` is useful when applying multiple configuration options simultaneously.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  [[oauth2-authorization-consent]]
 | 
	
		
			
				|  |  |  == OAuth2AuthorizationConsent
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -295,6 +298,9 @@ public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity h
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  ----
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +[NOTE]
 | 
	
		
			
				|  |  | +The `OAuth2AuthorizationServerConfigurer` is useful when applying multiple configuration options simultaneously.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  [[oauth2-token-context]]
 | 
	
		
			
				|  |  |  == OAuth2TokenContext
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -333,7 +339,7 @@ public interface OAuth2TokenContext extends Context {
 | 
	
		
			
				|  |  |  <4> `getAuthorization()`: The <<oauth2-authorization, OAuth2Authorization>> associated with the authorization grant.
 | 
	
		
			
				|  |  |  <5> `getAuthorizedScopes()`: The scope(s) authorized for the client.
 | 
	
		
			
				|  |  |  <6> `getTokenType()`: The `OAuth2TokenType` to generate. The supported values are `code`, `access_token`, `refresh_token`, and `id_token`.
 | 
	
		
			
				|  |  | -<7> `getAuthorizationGrantType()`: The `AuthorizationGrantType`.
 | 
	
		
			
				|  |  | +<7> `getAuthorizationGrantType()`: The `AuthorizationGrantType` associated with the authorization grant.
 | 
	
		
			
				|  |  |  <8> `getAuthorizationGrant()`: The `Authentication` instance used by the `AuthenticationProvider` that processes the authorization grant.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  [[oauth2-token-generator]]
 | 
	
	
		
			
				|  | @@ -363,7 +369,9 @@ The `OAuth2AccessTokenGenerator` generates an "opaque" (`OAuth2TokenFormat.REFER
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  [NOTE]
 | 
	
		
			
				|  |  |  The `OAuth2TokenGenerator` is an *OPTIONAL* component and defaults to a `DelegatingOAuth2TokenGenerator` composed of an `OAuth2AccessTokenGenerator` and `OAuth2RefreshTokenGenerator`.
 | 
	
		
			
				|  |  | -As well, if a `JwtEncoder` `@Bean` or `JWKSource<SecurityContext>` `@Bean` is registered, then a `JwtGenerator` is additionally composed in the `DelegatingOAuth2TokenGenerator`.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +[NOTE]
 | 
	
		
			
				|  |  | +If a `JwtEncoder` `@Bean` or `JWKSource<SecurityContext>` `@Bean` is registered, then a `JwtGenerator` is additionally composed in the `DelegatingOAuth2TokenGenerator`.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  The `OAuth2TokenGenerator` provides great flexibility, as it can support any custom token format for `access_token` and `refresh_token`.
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -401,6 +409,9 @@ public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity h
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  ----
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +[NOTE]
 | 
	
		
			
				|  |  | +The `OAuth2AuthorizationServerConfigurer` is useful when applying multiple configuration options simultaneously.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  [[oauth2-token-customizer]]
 | 
	
		
			
				|  |  |  == OAuth2TokenCustomizer
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -435,7 +446,7 @@ public OAuth2TokenCustomizer<OAuth2TokenClaimsContext> accessTokenCustomizer() {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  ----
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -[TIP]
 | 
	
		
			
				|  |  | +[NOTE]
 | 
	
		
			
				|  |  |  If the `OAuth2TokenGenerator` is not provided as a `@Bean` or is not configured through the `OAuth2AuthorizationServerConfigurer`, an `OAuth2TokenCustomizer<OAuth2TokenClaimsContext>` `@Bean` will automatically be configured with an `OAuth2AccessTokenGenerator`.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  An `OAuth2TokenCustomizer<JwtEncodingContext>` declared with a generic type of `JwtEncodingContext` (`implements OAuth2TokenContext`) provides the ability to customize the headers and claims of a `Jwt`.
 | 
	
	
		
			
				|  | @@ -473,5 +484,8 @@ public OAuth2TokenCustomizer<JwtEncodingContext> jwtCustomizer() {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  ----
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -[TIP]
 | 
	
		
			
				|  |  | +[NOTE]
 | 
	
		
			
				|  |  |  If the `OAuth2TokenGenerator` is not provided as a `@Bean` or is not configured through the `OAuth2AuthorizationServerConfigurer`, an `OAuth2TokenCustomizer<JwtEncodingContext>` `@Bean` will automatically be configured with a `JwtGenerator`.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +[TIP]
 | 
	
		
			
				|  |  | +For an example showing how you can xref:guides/how-to-userinfo.adoc#customize-id-token[customize the ID token], see the guide xref:guides/how-to-userinfo.adoc#how-to-userinfo[How-to: Customize the OpenID Connect 1.0 UserInfo response].
 |