Expected Behavior
OAuth2AuthorizationRequest.Builder could get registrationId as condition
Context
Sometimes,we need to customize OAuth2AuthorizationRequest via authorizationRequestCustomizer in DefaultOAuth2AuthorizationRequestResolver, but there is not a method in OAuth2AuthorizationRequest.Builder to expose registrationId, so i have to do this :
String registrationId = (String) oAuth2AuthorizationRequestBuilder.build()
.getAttributes()
.get(OAuth2ParameterNames.REGISTRATION_ID);
in
public void customize(OAuth2AuthorizationRequest.Builder builder) {
String registrationId = (String) builder.build()
.getAttributes()
.get(OAuth2ParameterNames.REGISTRATION_ID);
if (wechatRegistrationId.equals(registrationId)) {
builder.parameters(this::wechatParametersConsumer);
builder.authorizationRequestUri(this::authorizationRequestUriFunction);
}
}
Builded it twice may be not good. OAuth2AuthorizationRequest.Builder#getAttributes() or OAuth2AuthorizationRequest.Builder#getRegistrationId() may be a good way.
Comment From: sjohnr
Hi @NotFound403, thanks for the suggestion.
Have you tried something like the following?
public void customize(OAuth2AuthorizationRequest.Builder builder) {
builder.attributes(attributes -> {
String registrationId = (String) attributes.get(OAuth2ParameterNames.REGISTRATION_ID);
if (wechatRegistrationId.equals(registrationId)) {
this.wechatParametersConsumer.accept(attributes);
builder.authorizationRequestUri(this::authorizationRequestUriFunction);
}
});
}
Comment From: NotFound403
Done! It's amazing! I should have thought that. Thanks @sjohnr
Comment From: sjohnr
Wow, awesome! Glad to help!