|
@@ -23,6 +23,7 @@ import org.springframework.security.core.Authentication;
|
|
|
import org.springframework.security.core.GrantedAuthority;
|
|
|
import org.springframework.security.core.context.ReactiveSecurityContextHolder;
|
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
+import org.springframework.security.oauth2.client.ClientAuthorizationRequiredException;
|
|
|
import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
|
|
|
import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
|
|
|
import org.springframework.security.oauth2.client.registration.ClientRegistration;
|
|
@@ -150,7 +151,13 @@ public final class ServletOAuth2AuthorizedClientExchangeFilterFunction implement
|
|
|
* @return the {@link Consumer} to populate the attributes
|
|
|
*/
|
|
|
public static Consumer<Map<String, Object>> oauth2AuthorizedClient(OAuth2AuthorizedClient authorizedClient) {
|
|
|
- return attributes -> attributes.put(OAUTH2_AUTHORIZED_CLIENT_ATTR_NAME, authorizedClient);
|
|
|
+ return attributes -> {
|
|
|
+ if (authorizedClient == null) {
|
|
|
+ attributes.remove(OAUTH2_AUTHORIZED_CLIENT_ATTR_NAME);
|
|
|
+ } else {
|
|
|
+ attributes.put(OAUTH2_AUTHORIZED_CLIENT_ATTR_NAME, authorizedClient);
|
|
|
+ }
|
|
|
+ };
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -262,6 +269,9 @@ public final class ServletOAuth2AuthorizedClientExchangeFilterFunction implement
|
|
|
OAuth2AuthorizedClient authorizedClient = this.authorizedClientRepository
|
|
|
.loadAuthorizedClient(clientRegistrationId, authentication,
|
|
|
request);
|
|
|
+ if (authorizedClient == null) {
|
|
|
+ throw new ClientAuthorizationRequiredException(clientRegistrationId);
|
|
|
+ }
|
|
|
oauth2AuthorizedClient(authorizedClient).accept(attrs);
|
|
|
}
|
|
|
}
|