Skip to content

Commit 0ed919f

Browse files
committed
Deprecate ClientRegistration.redirectUriTemplate
Closes gh-8906
1 parent a0c10f2 commit 0ed919f

File tree

31 files changed

+156
-111
lines changed

31 files changed

+156
-111
lines changed

config/src/main/java/org/springframework/security/config/annotation/web/builders/HttpSecurity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2129,7 +2129,7 @@ public HttpSecurity saml2Login(Customizer<Saml2LoginConfigurer<HttpSecurity>> sa
21292129
* .clientSecret("google-client-secret")
21302130
* .clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
21312131
* .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
2132-
* .redirectUriTemplate("{baseUrl}/login/oauth2/code/{registrationId}")
2132+
* .redirectUri("{baseUrl}/login/oauth2/code/{registrationId}")
21332133
* .scope("openid", "profile", "email", "address", "phone")
21342134
* .authorizationUri("https://accounts.google.com/o/oauth2/v2/auth")
21352135
* .tokenUri("https://www.googleapis.com/oauth2/v4/token")
@@ -2223,7 +2223,7 @@ public OAuth2LoginConfigurer<HttpSecurity> oauth2Login() throws Exception {
22232223
* .clientSecret("google-client-secret")
22242224
* .clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
22252225
* .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
2226-
* .redirectUriTemplate("{baseUrl}/login/oauth2/code/{registrationId}")
2226+
* .redirectUri("{baseUrl}/login/oauth2/code/{registrationId}")
22272227
* .scope("openid", "profile", "email", "address", "phone")
22282228
* .authorizationUri("https://accounts.google.com/o/oauth2/v2/auth")
22292229
* .tokenUri("https://www.googleapis.com/oauth2/v4/token")

config/src/main/java/org/springframework/security/config/oauth2/client/ClientRegistrationsBeanDefinitionParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ private List<ClientRegistration> getClientRegistrations(Element element, ParserC
114114
.map(AuthorizationGrantType::new)
115115
.ifPresent(builder::authorizationGrantType);
116116
getOptionalIfNotEmpty(clientRegistrationElt.getAttribute(ATT_REDIRECT_URI))
117-
.ifPresent(builder::redirectUriTemplate);
117+
.ifPresent(builder::redirectUri);
118118
getOptionalIfNotEmpty(clientRegistrationElt.getAttribute(ATT_SCOPE))
119119
.map(StringUtils::commaDelimitedListToSet)
120120
.ifPresent(builder::scope);

config/src/main/java/org/springframework/security/config/oauth2/client/CommonOAuth2Provider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ protected final ClientRegistration.Builder getBuilder(String registrationId,
101101
ClientRegistration.Builder builder = ClientRegistration.withRegistrationId(registrationId);
102102
builder.clientAuthenticationMethod(method);
103103
builder.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE);
104-
builder.redirectUriTemplate(redirectUri);
104+
builder.redirectUri(redirectUri);
105105
return builder;
106106
}
107107

config/src/test/java/org/springframework/security/config/annotation/web/configurers/oauth2/client/OAuth2ClientConfigurerTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public void setup() {
106106
.clientSecret("secret")
107107
.clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
108108
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
109-
.redirectUriTemplate("{baseUrl}/client-1")
109+
.redirectUri("{baseUrl}/client-1")
110110
.scope("user")
111111
.authorizationUri("https://provider.com/oauth2/authorize")
112112
.tokenUri("https://provider.com/oauth2/token")

config/src/test/java/org/springframework/security/config/http/OAuth2ClientBeanDefinitionParserTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public void requestWhenCustomClientRegistrationRepositoryThenCalled() throws Exc
114114
ClientRegistration clientRegistration = CommonOAuth2Provider.GOOGLE.getBuilder("google")
115115
.clientId("google-client-id")
116116
.clientSecret("google-client-secret")
117-
.redirectUriTemplate("http://localhost/callback/google")
117+
.redirectUri("http://localhost/callback/google")
118118
.scope("scope1", "scope2")
119119
.build();
120120
when(this.clientRegistrationRepository.findByRegistrationId(any())).thenReturn(clientRegistration);
@@ -238,7 +238,7 @@ private static OAuth2AuthorizationRequest createAuthorizationRequest(ClientRegis
238238
return OAuth2AuthorizationRequest.authorizationCode()
239239
.authorizationUri(clientRegistration.getProviderDetails().getAuthorizationUri())
240240
.clientId(clientRegistration.getClientId())
241-
.redirectUri(clientRegistration.getRedirectUriTemplate())
241+
.redirectUri(clientRegistration.getRedirectUri())
242242
.scopes(clientRegistration.getScopes())
243243
.state("state")
244244
.attributes(attributes)

config/src/test/java/org/springframework/security/config/oauth2/client/ClientRegistrationsBeanDefinitionParserTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ public void parseWhenIssuerUriConfiguredThenRequestConfigFromIssuer() throws Exc
151151
assertThat(googleRegistration.getClientSecret()).isEqualTo("google-client-secret");
152152
assertThat(googleRegistration.getClientAuthenticationMethod()).isEqualTo(ClientAuthenticationMethod.BASIC);
153153
assertThat(googleRegistration.getAuthorizationGrantType()).isEqualTo(AuthorizationGrantType.AUTHORIZATION_CODE);
154-
assertThat(googleRegistration.getRedirectUriTemplate()).isEqualTo("{baseUrl}/{action}/oauth2/code/{registrationId}");
154+
assertThat(googleRegistration.getRedirectUri()).isEqualTo("{baseUrl}/{action}/oauth2/code/{registrationId}");
155155
assertThat(googleRegistration.getScopes()).isEqualTo(StringUtils.commaDelimitedListToSet("openid,profile,email"));
156156
assertThat(googleRegistration.getClientName()).isEqualTo(serverUrl);
157157

@@ -181,7 +181,7 @@ public void parseWhenMultipleClientsConfiguredThenAvailableInRepository() {
181181
assertThat(googleRegistration.getClientSecret()).isEqualTo("google-client-secret");
182182
assertThat(googleRegistration.getClientAuthenticationMethod()).isEqualTo(ClientAuthenticationMethod.BASIC);
183183
assertThat(googleRegistration.getAuthorizationGrantType()).isEqualTo(AuthorizationGrantType.AUTHORIZATION_CODE);
184-
assertThat(googleRegistration.getRedirectUriTemplate()).isEqualTo("{baseUrl}/login/oauth2/code/{registrationId}");
184+
assertThat(googleRegistration.getRedirectUri()).isEqualTo("{baseUrl}/login/oauth2/code/{registrationId}");
185185
assertThat(googleRegistration.getScopes()).isEqualTo(StringUtils.commaDelimitedListToSet("openid,profile,email"));
186186
assertThat(googleRegistration.getClientName()).isEqualTo("Google");
187187

@@ -205,7 +205,7 @@ public void parseWhenMultipleClientsConfiguredThenAvailableInRepository() {
205205
assertThat(githubRegistration.getClientSecret()).isEqualTo("github-client-secret");
206206
assertThat(githubRegistration.getClientAuthenticationMethod()).isEqualTo(ClientAuthenticationMethod.BASIC);
207207
assertThat(githubRegistration.getAuthorizationGrantType()).isEqualTo(AuthorizationGrantType.AUTHORIZATION_CODE);
208-
assertThat(githubRegistration.getRedirectUriTemplate()).isEqualTo("{baseUrl}/login/oauth2/code/{registrationId}");
208+
assertThat(githubRegistration.getRedirectUri()).isEqualTo("{baseUrl}/login/oauth2/code/{registrationId}");
209209
assertThat(googleRegistration.getScopes()).isEqualTo(StringUtils.commaDelimitedListToSet("openid,profile,email"));
210210
assertThat(githubRegistration.getClientName()).isEqualTo("Github");
211211

config/src/test/java/org/springframework/security/config/oauth2/client/CommonOAuth2ProviderTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public void getBuilderWhenGoogleShouldHaveGoogleSettings() {
5353
.isEqualTo(ClientAuthenticationMethod.BASIC);
5454
assertThat(registration.getAuthorizationGrantType())
5555
.isEqualTo(AuthorizationGrantType.AUTHORIZATION_CODE);
56-
assertThat(registration.getRedirectUriTemplate()).isEqualTo(DEFAULT_REDIRECT_URL);
56+
assertThat(registration.getRedirectUri()).isEqualTo(DEFAULT_REDIRECT_URL);
5757
assertThat(registration.getScopes()).containsOnly("openid", "profile", "email");
5858
assertThat(registration.getClientName()).isEqualTo("Google");
5959
assertThat(registration.getRegistrationId()).isEqualTo("123");
@@ -76,7 +76,7 @@ public void getBuilderWhenGitHubShouldHaveGitHubSettings() {
7676
.isEqualTo(ClientAuthenticationMethod.BASIC);
7777
assertThat(registration.getAuthorizationGrantType())
7878
.isEqualTo(AuthorizationGrantType.AUTHORIZATION_CODE);
79-
assertThat(registration.getRedirectUriTemplate()).isEqualTo(DEFAULT_REDIRECT_URL);
79+
assertThat(registration.getRedirectUri()).isEqualTo(DEFAULT_REDIRECT_URL);
8080
assertThat(registration.getScopes()).containsOnly("read:user");
8181
assertThat(registration.getClientName()).isEqualTo("GitHub");
8282
assertThat(registration.getRegistrationId()).isEqualTo("123");
@@ -99,7 +99,7 @@ public void getBuilderWhenFacebookShouldHaveFacebookSettings() {
9999
.isEqualTo(ClientAuthenticationMethod.POST);
100100
assertThat(registration.getAuthorizationGrantType())
101101
.isEqualTo(AuthorizationGrantType.AUTHORIZATION_CODE);
102-
assertThat(registration.getRedirectUriTemplate()).isEqualTo(DEFAULT_REDIRECT_URL);
102+
assertThat(registration.getRedirectUri()).isEqualTo(DEFAULT_REDIRECT_URL);
103103
assertThat(registration.getScopes()).containsOnly("public_profile", "email");
104104
assertThat(registration.getClientName()).isEqualTo("Facebook");
105105
assertThat(registration.getRegistrationId()).isEqualTo("123");
@@ -124,7 +124,7 @@ public void getBuilderWhenOktaShouldHaveOktaSettings() {
124124
.isEqualTo(ClientAuthenticationMethod.BASIC);
125125
assertThat(registration.getAuthorizationGrantType())
126126
.isEqualTo(AuthorizationGrantType.AUTHORIZATION_CODE);
127-
assertThat(registration.getRedirectUriTemplate()).isEqualTo(DEFAULT_REDIRECT_URL);
127+
assertThat(registration.getRedirectUri()).isEqualTo(DEFAULT_REDIRECT_URL);
128128
assertThat(registration.getScopes()).containsOnly("openid", "profile", "email");
129129
assertThat(registration.getClientName()).isEqualTo("Okta");
130130
assertThat(registration.getRegistrationId()).isEqualTo("123");

docs/manual/src/docs/asciidoc/_includes/servlet/oauth2/oauth2-client.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public final class ClientRegistration {
156156
private String clientSecret; <3>
157157
private ClientAuthenticationMethod clientAuthenticationMethod; <4>
158158
private AuthorizationGrantType authorizationGrantType; <5>
159-
private String redirectUriTemplate; <6>
159+
private String redirectUri; <6>
160160
private Set<String> scopes; <7>
161161
private ProviderDetails providerDetails;
162162
private String clientName; <8>
@@ -185,7 +185,7 @@ public final class ClientRegistration {
185185
The supported values are *basic*, *post* and *none* https://tools.ietf.org/html/rfc6749#section-2.1[(public clients)].
186186
<5> `authorizationGrantType`: The OAuth 2.0 Authorization Framework defines four https://tools.ietf.org/html/rfc6749#section-1.3[Authorization Grant] types.
187187
The supported values are `authorization_code`, `client_credentials` and `password`.
188-
<6> `redirectUriTemplate`: The client's registered redirect URI that the _Authorization Server_ redirects the end-user's user-agent
188+
<6> `redirectUri`: The client's registered redirect URI that the _Authorization Server_ redirects the end-user's user-agent
189189
to after the end-user has authenticated and authorized access to the client.
190190
<7> `scopes`: The scope(s) requested by the client during the Authorization Request flow, such as openid, email, or profile.
191191
<8> `clientName`: A descriptive name used for the client.

docs/manual/src/docs/asciidoc/_includes/servlet/oauth2/oauth2-login.adoc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ The following table outlines the mapping of the Spring Boot 2.x OAuth Client pro
114114
|`authorizationGrantType`
115115

116116
|`spring.security.oauth2.client.registration._[registrationId]_.redirect-uri`
117-
|`redirectUriTemplate`
117+
|`redirectUri`
118118

119119
|`spring.security.oauth2.client.registration._[registrationId]_.scope`
120120
|`scopes`
@@ -266,7 +266,7 @@ public class OAuth2LoginConfig {
266266
.clientSecret("google-client-secret")
267267
.clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
268268
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
269-
.redirectUriTemplate("{baseUrl}/login/oauth2/code/{registrationId}")
269+
.redirectUri("{baseUrl}/login/oauth2/code/{registrationId}")
270270
.scope("openid", "profile", "email", "address", "phone")
271271
.authorizationUri("https://accounts.google.com/o/oauth2/v2/auth")
272272
.tokenUri("https://www.googleapis.com/oauth2/v4/token")
@@ -360,7 +360,7 @@ public class OAuth2LoginConfig {
360360
.clientSecret("google-client-secret")
361361
.clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
362362
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
363-
.redirectUriTemplate("{baseUrl}/login/oauth2/code/{registrationId}")
363+
.redirectUri("{baseUrl}/login/oauth2/code/{registrationId}")
364364
.scope("openid", "profile", "email", "address", "phone")
365365
.authorizationUri("https://accounts.google.com/o/oauth2/v2/auth")
366366
.tokenUri("https://www.googleapis.com/oauth2/v4/token")
@@ -403,7 +403,7 @@ class OAuth2LoginConfig {
403403
.clientSecret("google-client-secret")
404404
.clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
405405
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
406-
.redirectUriTemplate("{baseUrl}/login/oauth2/code/{registrationId}")
406+
.redirectUri("{baseUrl}/login/oauth2/code/{registrationId}")
407407
.scope("openid", "profile", "email", "address", "phone")
408408
.authorizationUri("https://accounts.google.com/o/oauth2/v2/auth")
409409
.tokenUri("https://www.googleapis.com/oauth2/v4/token")
@@ -854,7 +854,7 @@ class OAuth2LoginSecurityConfig : WebSecurityConfigurerAdapter() {
854854

855855
[IMPORTANT]
856856
====
857-
You also need to ensure the `ClientRegistration.redirectUriTemplate` matches the custom Authorization Response `baseUri`.
857+
You also need to ensure the `ClientRegistration.redirectUri` matches the custom Authorization Response `baseUri`.
858858
859859
The following listing shows an example:
860860
@@ -863,7 +863,7 @@ The following listing shows an example:
863863
return CommonOAuth2Provider.GOOGLE.getBuilder("google")
864864
.clientId("google-client-id")
865865
.clientSecret("google-client-secret")
866-
.redirectUriTemplate("{baseUrl}/login/oauth2/callback/{registrationId}")
866+
.redirectUri("{baseUrl}/login/oauth2/callback/{registrationId}")
867867
.build();
868868
----
869869
====

oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/jackson2/ClientRegistrationDeserializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public ClientRegistration deserialize(JsonParser parser, DeserializationContext
6767
.authorizationGrantType(
6868
AUTHORIZATION_GRANT_TYPE_CONVERTER.convert(
6969
findObjectNode(clientRegistrationNode, "authorizationGrantType")))
70-
.redirectUriTemplate(findStringValue(clientRegistrationNode, "redirectUriTemplate"))
70+
.redirectUri(findStringValue(clientRegistrationNode, "redirectUri"))
7171
.scope(findValue(clientRegistrationNode, "scopes", SET_TYPE_REFERENCE, mapper))
7272
.clientName(findStringValue(clientRegistrationNode, "clientName"))
7373
.authorizationUri(findStringValue(providerDetailsNode, "authorizationUri"))

0 commit comments

Comments
 (0)