Skip to content

Commit daa3d45

Browse files
committed
Revert OAuth2 Client Registration Grant Type Hierarchy
Closes gh-14554
1 parent 546bd89 commit daa3d45

File tree

15 files changed

+168
-661
lines changed

15 files changed

+168
-661
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/ClientsConfiguredCondition.java

+10-25
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
package org.springframework.boot.autoconfigure.security.oauth2.client;
1717

1818
import java.util.Collections;
19-
import java.util.HashMap;
2019
import java.util.Map;
2120
import java.util.stream.Collectors;
2221

@@ -36,46 +35,32 @@
3635
* @author Madhura Bhave
3736
* @since 2.1.0
3837
*/
39-
public class ClientsConfiguredCondition extends SpringBootCondition {
4038

41-
private static final Bindable<Map<String, OAuth2ClientProperties.LoginClientRegistration>> STRING_LOGIN_REGISTRATION_MAP = Bindable
42-
.mapOf(String.class, OAuth2ClientProperties.LoginClientRegistration.class);
39+
public class ClientsConfiguredCondition extends SpringBootCondition {
4340

44-
private static final Bindable<Map<String, OAuth2ClientProperties.AuthorizationCodeClientRegistration>> STRING_AUTHORIZATION_CODE_REGISTRATION_MAP = Bindable
45-
.mapOf(String.class,
46-
OAuth2ClientProperties.AuthorizationCodeClientRegistration.class);
41+
private static final Bindable<Map<String, OAuth2ClientProperties.Registration>> STRING_REGISTRATION_MAP = Bindable
42+
.mapOf(String.class, OAuth2ClientProperties.Registration.class);
4743

4844
@Override
4945
public ConditionOutcome getMatchOutcome(ConditionContext context,
5046
AnnotatedTypeMetadata metadata) {
5147
ConditionMessage.Builder message = ConditionMessage
5248
.forCondition("OAuth2 Clients Configured Condition");
53-
Map<String, OAuth2ClientProperties.BaseClientRegistration> registrations = getRegistrations(
49+
Map<String, OAuth2ClientProperties.Registration> registrations = getRegistrations(
5450
context.getEnvironment());
5551
if (!registrations.isEmpty()) {
56-
return ConditionOutcome.match(message.foundExactly(
57-
"registered clients " + registrations.values().stream().map(
58-
OAuth2ClientProperties.BaseClientRegistration::getClientId)
52+
return ConditionOutcome.match(message
53+
.foundExactly("registered clients " + registrations.values().stream()
54+
.map(OAuth2ClientProperties.Registration::getClientId)
5955
.collect(Collectors.joining(", "))));
6056
}
6157
return ConditionOutcome.noMatch(message.notAvailable("registered clients"));
6258
}
6359

64-
private Map<String, OAuth2ClientProperties.BaseClientRegistration> getRegistrations(
60+
private Map<String, OAuth2ClientProperties.Registration> getRegistrations(
6561
Environment environment) {
66-
Map<String, OAuth2ClientProperties.BaseClientRegistration> registrations = new HashMap<>();
67-
Map<String, OAuth2ClientProperties.LoginClientRegistration> loginClientRegistrations = Binder
68-
.get(environment).bind("spring.security.oauth2.client.registration.login",
69-
STRING_LOGIN_REGISTRATION_MAP)
70-
.orElse(Collections.emptyMap());
71-
Map<String, OAuth2ClientProperties.AuthorizationCodeClientRegistration> authCodeClientRegistrations = Binder
72-
.get(environment)
73-
.bind("spring.security.oauth2.client.registration.authorizationcode",
74-
STRING_AUTHORIZATION_CODE_REGISTRATION_MAP)
75-
.orElse(Collections.emptyMap());
76-
registrations.putAll(loginClientRegistrations);
77-
registrations.putAll(authCodeClientRegistrations);
78-
return registrations;
62+
return Binder.get(environment).bind("spring.security.oauth2.client.registration",
63+
STRING_REGISTRATION_MAP).orElse(Collections.emptyMap());
7964
}
8065

8166
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientProperties.java

+29-90
Original file line numberDiff line numberDiff line change
@@ -44,115 +44,31 @@ public class OAuth2ClientProperties {
4444
/**
4545
* OAuth client registrations.
4646
*/
47-
private final Registration registration = new Registration();
47+
private final Map<String, Registration> registration = new HashMap<>();
4848

4949
public Map<String, Provider> getProvider() {
5050
return this.provider;
5151
}
5252

53-
public Registration getRegistration() {
53+
public Map<String, Registration> getRegistration() {
5454
return this.registration;
5555
}
5656

5757
@PostConstruct
5858
public void validate() {
59-
this.getRegistration().getLogin().values().forEach(this::validateRegistration);
60-
this.getRegistration().getAuthorizationCode().values()
61-
.forEach(this::validateRegistration);
59+
this.getRegistration().values().forEach(this::validateRegistration);
6260
}
6361

64-
private void validateRegistration(BaseClientRegistration registration) {
62+
private void validateRegistration(Registration registration) {
6563
if (!StringUtils.hasText(registration.getClientId())) {
6664
throw new IllegalStateException("Client id must not be empty.");
6765
}
6866
}
6967

70-
public static class Registration {
71-
72-
/**
73-
* OpenID Connect client registrations.
74-
*/
75-
private Map<String, LoginClientRegistration> login = new HashMap<>();
76-
77-
/**
78-
* OAuth2 authorization_code client registrations.
79-
*/
80-
private Map<String, AuthorizationCodeClientRegistration> authorizationCode = new HashMap<>();
81-
82-
public Map<String, LoginClientRegistration> getLogin() {
83-
return this.login;
84-
}
85-
86-
public void setLogin(Map<String, LoginClientRegistration> login) {
87-
this.login = login;
88-
}
89-
90-
public Map<String, AuthorizationCodeClientRegistration> getAuthorizationCode() {
91-
return this.authorizationCode;
92-
}
93-
94-
public void setAuthorizationCode(
95-
Map<String, AuthorizationCodeClientRegistration> authorizationCode) {
96-
this.authorizationCode = authorizationCode;
97-
}
98-
99-
}
100-
10168
/**
102-
* A single client registration for OpenID Connect login.
69+
* A single client registration.
10370
*/
104-
public static class LoginClientRegistration extends BaseClientRegistration {
105-
106-
/**
107-
* Redirect URI. May be left blank when using a pre-defined provider.
108-
*/
109-
private String redirectUri;
110-
111-
public String getRedirectUri() {
112-
return this.redirectUri;
113-
}
114-
115-
public void setRedirectUri(String redirectUri) {
116-
this.redirectUri = redirectUri;
117-
}
118-
119-
@Deprecated
120-
public String getRedirectUriTemplate() {
121-
return getRedirectUri();
122-
}
123-
124-
@Deprecated
125-
public void setRedirectUriTemplate(String redirectUri) {
126-
setRedirectUri(redirectUri);
127-
}
128-
129-
}
130-
131-
/**
132-
* A single client registration for OAuth2 authorization_code flow.
133-
*/
134-
public static class AuthorizationCodeClientRegistration
135-
extends BaseClientRegistration {
136-
137-
/**
138-
* Redirect URI for the registration.
139-
*/
140-
private String redirectUri;
141-
142-
public String getRedirectUri() {
143-
return this.redirectUri;
144-
}
145-
146-
public void setRedirectUri(String redirectUri) {
147-
this.redirectUri = redirectUri;
148-
}
149-
150-
}
151-
152-
/**
153-
* Base class for a single client registration.
154-
*/
155-
public static class BaseClientRegistration {
71+
public static class Registration {
15672

15773
/**
15874
* Reference to the OAuth 2.0 provider to use. May reference an element from the
@@ -182,6 +98,11 @@ public static class BaseClientRegistration {
18298
*/
18399
private String authorizationGrantType;
184100

101+
/**
102+
* Redirect URI. May be left blank when using a pre-defined provider.
103+
*/
104+
private String redirectUri;
105+
185106
/**
186107
* Authorization scopes. May be left blank when using a pre-defined provider.
187108
*/
@@ -232,6 +153,24 @@ public void setAuthorizationGrantType(String authorizationGrantType) {
232153
this.authorizationGrantType = authorizationGrantType;
233154
}
234155

156+
public String getRedirectUri() {
157+
return this.redirectUri;
158+
}
159+
160+
public void setRedirectUri(String redirectUri) {
161+
this.redirectUri = redirectUri;
162+
}
163+
164+
@Deprecated
165+
public String getRedirectUriTemplate() {
166+
return getRedirectUri();
167+
}
168+
169+
@Deprecated
170+
public void setRedirectUriTemplate(String redirectUri) {
171+
setRedirectUri(redirectUri);
172+
}
173+
235174
public Set<String> getScope() {
236175
return this.scope;
237176
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientPropertiesEnvironmentPostProcessor.java

-115
This file was deleted.

0 commit comments

Comments
 (0)