Skip to content

Commit 88975da

Browse files
committed
ServletOAuth2AuthorizedClientExchangeFilterFunction handles null authorized client
Issue: gh-5545
1 parent 67dd3f1 commit 88975da

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/web/reactive/function/client/ServletOAuth2AuthorizedClientExchangeFilterFunction.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.springframework.security.core.GrantedAuthority;
2424
import org.springframework.security.core.context.ReactiveSecurityContextHolder;
2525
import org.springframework.security.core.context.SecurityContextHolder;
26+
import org.springframework.security.oauth2.client.ClientAuthorizationRequiredException;
2627
import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
2728
import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
2829
import org.springframework.security.oauth2.client.registration.ClientRegistration;
@@ -150,7 +151,13 @@ public Consumer<WebClient.RequestHeadersSpec<?>> defaultRequest() {
150151
* @return the {@link Consumer} to populate the attributes
151152
*/
152153
public static Consumer<Map<String, Object>> oauth2AuthorizedClient(OAuth2AuthorizedClient authorizedClient) {
153-
return attributes -> attributes.put(OAUTH2_AUTHORIZED_CLIENT_ATTR_NAME, authorizedClient);
154+
return attributes -> {
155+
if (authorizedClient == null) {
156+
attributes.remove(OAUTH2_AUTHORIZED_CLIENT_ATTR_NAME);
157+
} else {
158+
attributes.put(OAUTH2_AUTHORIZED_CLIENT_ATTR_NAME, authorizedClient);
159+
}
160+
};
154161
}
155162

156163
/**
@@ -262,6 +269,9 @@ private void populateDefaultOAuth2AuthorizedClient(Map<String, Object> attrs) {
262269
OAuth2AuthorizedClient authorizedClient = this.authorizedClientRepository
263270
.loadAuthorizedClient(clientRegistrationId, authentication,
264271
request);
272+
if (authorizedClient == null) {
273+
throw new ClientAuthorizationRequiredException(clientRegistrationId);
274+
}
265275
oauth2AuthorizedClient(authorizedClient).accept(attrs);
266276
}
267277
}

0 commit comments

Comments
 (0)