Reputation: 1794
I have frontend app with @EnableOAuth2Sso enabled. Also, I'd like to use custom OAuth2ProtectedResourceDetails to inject into all OAuth2RestTemplate beans (particularly to redefine behavior of OAuth2RestTemplate within OAuth2RestOperationsConfiguration). I just defined my own bean for OAuth2ProtectedResourceDetails but OAuth2RestTemplate still uses the AuthorizationCodeResourceDetails).
@SpringBootApplication(scanBasePackages = {"base.package"})
@EnableOAuth2Sso
@EnableZuulProxy
public class Application extends WebSecurityConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Autowired
private RedirectUriResolver redirectUriResolver;
@Override
public void configure(HttpSecurity http) throws Exception {
// some http configuration
}
@Bean
public OAuth2ProtectedResourceDetails resource() {
AuthorizationCodeResourceDetails resource = new CustomAuthorizationCodeResourceDetails(redirectUriResolver);
return resource;
}
}
Should I redefine whole OAuth2RestTemplate bean somehow or just this OAuth2ProtectedResourceDetails?
Upvotes: 1
Views: 3177
Reputation: 46
You should be able to overload the beans that get setup in OAuth2RestOperationsConfiguration with your own
@Bean
@ConfigurationProperties("security.oauth2.client")
public ClientCredentialsResourceDetails oauth2RemoteResource() {
ClientCredentialsResourceDetails details = new ClientCredentialsResourceDetails();
return details;
}
If not, just create your own beans
@Bean
@ConfigurationProperties("security.oauth2.client")
public ClientCredentialsResourceDetails customOauth2RemoteResource() {
ClientCredentialsResourceDetails details = new ClientCredentialsResourceDetails();
return details;
}
@Bean
public OAuth2RestTemplate customOauth2RestTemplate() {
OAuth2RestTemplate template = new OAuth2RestTemplate(customOauth2RemoteResource(),
new DefaultOAuth2ClientContext());
return template;
}
Then use @Qualifier to reference them
@Autowired
@Qualifier("customOauth2RestTemplate")
private RestTemplate restTemplate;
Upvotes: 2