-
Notifications
You must be signed in to change notification settings - Fork 80
Open
Description
something like this would work
/**
* @author Josh Long
*/
public class OAuth2AuthorizedClientBearerTokenAuthenticationInterceptor
extends BearerTokenAuthenticationInterceptor {
static class SecurityContextAwareSupplier implements Supplier<String> {
private final OAuth2AuthorizedClientManager authorizedClientManager;
SecurityContextAwareSupplier(OAuth2AuthorizedClientManager authorizedClientManager) {
this.authorizedClientManager = authorizedClientManager;
}
@Override
public String get() {
if ( SecurityContextHolder
.getContextHolderStrategy()
.getContext()
.getAuthentication() instanceof OAuth2AuthenticationToken auth2AuthenticationToken) {
var clientId = auth2AuthenticationToken.getAuthorizedClientRegistrationId();
var oauthAuthorizationRequest = OAuth2AuthorizeRequest
.withClientRegistrationId(clientId)
.principal(auth2AuthenticationToken)
.build();
var client = this.authorizedClientManager.authorize(oauthAuthorizationRequest);
return Objects.requireNonNull(client)
.getAccessToken().getTokenValue();
}
throw new IllegalStateException("No authenticated user");
}
}
public OAuth2AuthorizedClientBearerTokenAuthenticationInterceptor(
OAuth2AuthorizedClientManager authorizedClientManager) {
super(new SecurityContextAwareSupplier(authorizedClientManager));
}
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels