anchor.diff:  ----
   
   [TIP]
  -The _auto-defaulting_ of client properties seamlessly works here because the *registrationId* (google) matches the `GOOGLE` `enum` (case-insensitive) in `CommonOAuth2Provider`.
  -
  -For cases where you may want to specify a different *registrationId*, for example, *google-login*,
  -you can still leverage _auto-defaulting_ of client properties by configuring the *provider* property.
  -
  -For example:
  +The auto-defaulting of client properties works seamlessly here because the `registrationId` (`google`) matches the `GOOGLE` `enum` (case-insensitive) in `CommonOAuth2Provider`.
  +
  +For cases where you may want to specify a different `registrationId`, such as `google-login`,
  +you can still leverage auto-defaulting of client properties by configuring the `provider` property.
  +
  +The following listing shows an example:
   
   [source,yaml]
   ----
  
positive.code: ==== Configuring a Custom OAuth2User
  
  `CustomUserTypesOAuth2UserService` is an implementation of an `OAuth2UserService`
  which provides support for custom `OAuth2User` types.
  
  There may be a use case where you would like to define your own implementation of `OAuth2User`
  as the default implementation (`DefaultOAuth2User`) may not suit your needs.
  
  The following code demonstrates how you would register a custom `OAuth2User` type for *GitHub*.
  
  [source,java]
  ----
  
negative.code: By default, a failed result will cause a standard Spring Security `BadCredentialsException`. If you set the property `convertSubErrorCodesToExceptions` to `true`, the exception messages will be parsed to attempt to extract the Active Directory-specific error code and raise a more specific exception. Check the class Javadoc for more information.
  
  [[oauth2login-advanced]]
  == OAuth 2.0 Login -- Advanced Configuration
  
  `HttpSecurity.oauth2Login()` (`OAuth2LoginConfigurer`) provides a number of configuration options for customizing OAuth 2.0 Login.
  The main configuration options are grouped into their protocol endpoint counterparts.
  //TODO What is the relationship of `HttpSecurity.oauth2Login` to `OAuth2LoginConfigurer`?
  
  For example, `oauth2Login().authorizationEndpoint()` allows configuring the _Authorization Endpoint_,
  whereas `oauth2Login().tokenEndpoint()` allows configuring the _Token Endpoint_.
  
  The following code shows an example:
  
  [source,java]
  ----
  