Я разрабатываю клиент OAuth2 с помощью SpringBoot. Стороннему серверу аутентификации требуются определенные параметры в URL-адресах перенаправления.
Мой app.yml
acme:
client:
clientId: acme
clientSecret: acmepassword
accessTokenUri: http://localhost:8080/sso/oauth/token
userAuthorizationUri: http://localhost:8080/sso/oauth/authorize
specificParam1: specific1
specificParam2: specific2
resource:
userInfoUri: http://localhost:8080/sso/api/me
Я создал свой CustomClientResourceDetails
, расширив его от AuthorizationCodeResourceDetails
.
public class CustomClientResourceDetails extends AuthorizationCodeResourceDetails {
private String specificParam1;
private String specificParam2;
...
}
И @Autowire это в моем SecurityConfig. Я также создал пользовательский фильтр
@Configuration
@EnableOAuth2Client
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
OAuth2ClientContext oauth2ClientContext;
@Override
protected void configure(HttpSecurity http) throws Exception {
...
.addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class);
}
@Bean
public FilterRegistrationBean<OAuth2ClientContextFilter> oauth2ClientFilterRegistration(OAuth2ClientContextFilter filter) {
FilterRegistrationBean<OAuth2ClientContextFilter> registration = new FilterRegistrationBean<OAuth2ClientContextFilter>();
registration.setFilter(filter);
registration.setOrder(-100);
return registration;
}
private Filter ssoFilter() {
OAuth2ClientAuthenticationProcessingFilter customFilter = new OAuth2ClientAuthenticationProcessingFilter(LOGIN);
OAuth2RestTemplate customTemplate = new OAuth2RestTemplate(custom(), oauth2ClientContext);
customFilter.setRestTemplate(customTemplate);
UserInfoTokenServices tokenServices = new UserInfoTokenServices(customResource().getUserInfoUri(),
custom().getClientId());
tokenServices.setRestTemplate(customTemplate);
customFilter.setTokenServices(
new UserInfoTokenServices(customResource().getUserInfoUri(), custom().getClientId()));
return customFilter;
}
@Bean
@ConfigurationProperties("acme.client")
@Primary
public AuthorizationCodeResourceDetails custom() {
return new CustomClientResourceDetails();
}
@Bean
@ConfigurationProperties("acme.resource")
public ResourceServerProperties customResource() {
return new ResourceServerProperties();
}
}
Но конкретный параметр не включен в URL-адрес перенаправления, потому что OAuth2ClientAuthenticationProcessingFilter
и связанные с ним классы работают через OAuth2RestOperations
или 'OAuth2ProtectedResourceDetails', где только параметры по умолчанию.
Можно ли включить дополнительные параметры для перенаправления URL-адресов? И как?
Спасибо за любую помощь!