Browse Source

Merge 6a085f9057 into 9095a1bffd

pull/18304/merge
Elayne Bloom 2 days ago committed by GitHub
parent
commit
18620ab4ed
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 11
      docs/modules/ROOT/pages/reactive/oauth2/client/authorization-grants.adoc
  2. 2
      docs/modules/ROOT/pages/reactive/oauth2/client/core.adoc
  3. 26
      docs/modules/ROOT/pages/servlet/oauth2/authorization-server/core-model-components.adoc
  4. 4
      docs/modules/ROOT/pages/servlet/oauth2/client/authorization-grants.adoc
  5. 2
      docs/modules/ROOT/pages/servlet/oauth2/client/core.adoc

11
docs/modules/ROOT/pages/reactive/oauth2/client/authorization-grants.adoc

@ -74,18 +74,19 @@ spring: @@ -74,18 +74,19 @@ spring:
----
Public Clients are supported using https://tools.ietf.org/html/rfc7636[Proof Key for Code Exchange] (PKCE).
If the client is running in an untrusted environment (eg. native application or web browser-based application) and therefore incapable of maintaining the confidentiality of it's credentials, PKCE will automatically be used when the following conditions are true:
If the client is running in an untrusted environment (eg. native application or web browser-based application) and therefore incapable of maintaining the confidentiality of its credentials, PKCE will automatically be used when the following conditions are true:
. `client-secret` is omitted (or empty)
. `client-authentication-method` is set to "none" (`ClientAuthenticationMethod.NONE`)
. `client-secret` is omitted (or empty) and
. `client-authentication-method` is set to `none` (`ClientAuthenticationMethod.NONE`)
or
. When `ClientRegistration.clientSettings.requireProofKey` is `true` (in this case `ClientRegistration.authorizationGrantType` must be `authorization_code`)
. `authorization-grant-type` is set to `authorization_code` (`AuthorizationGrantType.AUTHORIZATION_CODE`)
[TIP]
====
If the OAuth 2.0 Provider supports PKCE for https://tools.ietf.org/html/rfc6749#section-2.1[Confidential Clients], you may (optionally) configure it using `DefaultServerOAuth2AuthorizationRequestResolver.setAuthorizationRequestCustomizer(OAuth2AuthorizationRequestCustomizers.withPkce())`.
If the OAuth 2.0 Provider doesn't support PKCE for https://tools.ietf.org/html/rfc6749#section-2.1[Confidential Clients], you need to disable it by setting `ClientRegistration.clientSettings.requireProofKey` to `false`.
====
[[oauth2-client-authorization-code-redirect-uri]]

2
docs/modules/ROOT/pages/reactive/oauth2/client/core.adoc

@ -68,7 +68,7 @@ The name may be used in certain scenarios, such as when displaying the name of t @@ -68,7 +68,7 @@ The name may be used in certain scenarios, such as when displaying the name of t
<15> `(userInfoEndpoint)authenticationMethod`: The authentication method used when sending the access token to the UserInfo Endpoint.
The supported values are *header*, *form* and *query*.
<16> `userNameAttributeName`: The name of the attribute returned in the UserInfo Response that references the Name or Identifier of the end-user.
<17> [[oauth2Client-client-registration-requireProofKey]]`requireProofKey`: If `true` or if `authorizationGrantType` is `none`, then PKCE will be enabled by default.
<17> [[oauth2Client-client-registration-requireProofKey]]`requireProofKey`: If `true` or if `clientAuthenticationMethod` is `none`, then PKCE will be enabled. Defaults to `true` for `authorization_code` grant type and `false` for other grant types.
A `ClientRegistration` can be initially configured using discovery of an OpenID Connect Provider's https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig[Configuration endpoint] or an Authorization Server's https://tools.ietf.org/html/rfc8414#section-3[Metadata endpoint].

26
docs/modules/ROOT/pages/servlet/oauth2/authorization-server/core-model-components.adoc

@ -92,6 +92,32 @@ public class RegisteredClient implements Serializable { @@ -92,6 +92,32 @@ public class RegisteredClient implements Serializable {
<12> `clientSettings`: The custom settings for the client – for example, require https://datatracker.ietf.org/doc/html/rfc7636[PKCE], require authorization consent, and others.
<13> `tokenSettings`: The custom settings for the OAuth2 tokens issued to the client – for example, access/refresh token time-to-live, reuse refresh tokens, and others.
[[oauth2AuthorizationServer-client-settings]]
== ClientSettings
`ClientSettings` is a configuration object that contains custom settings for a client. The following example shows the available settings and their default values:
[source,java]
----
ClientSettings.builder()
.requireProofKey() <1>
.requireAuthorizationConsent() <2>
.jwkSetUrl() <3>
.tokenEndpointAuthenticationSigningAlgorithm() <4>
.x509CertificateSubjectDN() <5>
.build();
----
<1> `requireProofKey`: If `true`, the client is required to provide a proof key challenge and verifier when performing the Authorization Code Grant flow (PKCE). The default is `true`.
<2> `requireAuthorizationConsent`: If `true`, authorization consent is required when the client requests access. The default is `false`.
<3> `jwkSetUrl`: The URL for the client's JSON Web Key Set. Used for `client_secret_jwt` and `private_key_jwt` client authentication methods, as well as for Self-Signed Certificate Mutual-TLS.
<4> `tokenEndpointAuthenticationSigningAlgorithm`: The JWS algorithm required for signing the JWT used to authenticate the client at the Token Endpoint.
<5> `x509CertificateSubjectDN`: The expected subject distinguished name in the client X509Certificate for PKI Mutual-TLS client authentication.
[NOTE]
====
https://datatracker.ietf.org/doc/html/rfc7636[Proof Key for Code Exchange (PKCE)] is enabled by default for all clients using the Authorization Code grant. To disable PKCE, set `requireProofKey` to `false`
====
[[oauth2AuthorizationServer-registered-client-repository]]
== RegisteredClientRepository

4
docs/modules/ROOT/pages/servlet/oauth2/client/authorization-grants.adoc

@ -82,12 +82,12 @@ If the client is running in an untrusted environment (such as a native applicati @@ -82,12 +82,12 @@ If the client is running in an untrusted environment (such as a native applicati
or
. When `ClientRegistration.clientSettings.requireProofKey` is `true` (in this case `ClientRegistration.authorizationGrantType` must be `authorization_code`)
. `authorization-grant-type` is set to `authorization_code` (`AuthorizationGrantType.AUTHORIZATION_CODE`)
[TIP]
====
If the OAuth 2.0 Provider supports PKCE for https://tools.ietf.org/html/rfc6749#section-2.1[Confidential Clients], you may (optionally) configure it using `DefaultOAuth2AuthorizationRequestResolver.setAuthorizationRequestCustomizer(OAuth2AuthorizationRequestCustomizers.withPkce())`.
If the OAuth 2.0 Provider doesn't support PKCE for https://tools.ietf.org/html/rfc6749#section-2.1[Confidential Clients], you need to disable it by setting `ClientRegistration.clientSettings.requireProofKey` to `false`.
====
[[oauth2-client-authorization-code-redirect-uri]]

2
docs/modules/ROOT/pages/servlet/oauth2/client/core.adoc

@ -69,7 +69,7 @@ This information is available only if the Spring Boot property `spring.security. @@ -69,7 +69,7 @@ This information is available only if the Spring Boot property `spring.security.
<15> `(userInfoEndpoint)authenticationMethod`: The authentication method used when sending the access token to the UserInfo Endpoint.
The supported values are *header*, *form*, and *query*.
<16> `userNameAttributeName`: The name of the attribute returned in the UserInfo Response that references the Name or Identifier of the end-user.
<17> [[oauth2Client-client-registration-requireProofKey]]`requireProofKey`: If `true` or if `clientAuthenticationMethod` is `none`, then PKCE will be enabled.
<17> [[oauth2Client-client-registration-requireProofKey]]`requireProofKey`: If `true` or if `clientAuthenticationMethod` is `none`, then PKCE will be enabled. Defaults to `true` for `authorization_code` grant type and `false` for other grant types.
You can initially configure a `ClientRegistration` by using discovery of an OpenID Connect Provider's https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig[Configuration endpoint] or an Authorization Server's https://tools.ietf.org/html/rfc8414#section-3[Metadata endpoint].

Loading…
Cancel
Save