[英]How to modify body of the spring boot reactive oauth2 authorization request
[英]Customize Spring OAUTH2 authorization request URL
如何自定義由 Spring 發送到我配置的身份提供商的 OAUTH2 授權請求 URL?
實施OAuth2AuthorizationRequestResolver
@Component
public class CustomAuthorizationRequestResolver implements OAuth2AuthorizationRequestResolver {
private final CustomAuthorizationRequestResolver defaultResolver;
public CustomAuthorizationRequestResolver(OAuth2ClientProperties oauth2ClientProperties){
ClientRegistration auth0 =
OAuth2ClientPropertiesRegistrationAdapter.getClientRegistrations(oauth2ClientProperties).get("auth0");
InMemoryClientRegistrationRepository clientRegistrationRepository =
new InMemoryClientRegistrationRepository(auth0);
this.defaultResolver = new DefaultOAuth2AuthorizationRequestResolver(clientRegistrationRepository, "/oauth2/authorization");
}
@Override
public OAuth2AuthorizationRequest resolve(HttpServletRequest request) {
OAuth2AuthorizationRequest req = defaultResolver.resolve(request);
if(req != null){
req = customizeAuthorizationRequest(req);
}
return req;
}
@Override
public OAuth2AuthorizationRequest resolve(HttpServletRequest request, String clientRegistrationId) {
OAuth2AuthorizationRequest req = defaultResolver.resolve(request, clientRegistrationId);
if(req != null){
req = customizeAuthorizationRequest(req);
}
return req;
}
// Customize request here
private OAuth2AuthorizationRequest customizeAuthorizationRequest(OAuth2AuthorizationRequest req) {
Map<String,Object> extraParams = new HashMap<>(req.getAdditionalParameters());
extraParams.put("connection", "my-connection-name");
return OAuth2AuthorizationRequest.from(req).additionalParameters(extraParams).build();
}
}
在您的 Spring 安全配置上設置授權請求解析器:
@Override
public void configure(HttpSecurity http) throws Exception {
http
...
.oauth2Login()
.authorizationEndpoint()
.authorizationRequestResolver(customAuthorizationRequestResolver)
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.