2015-12-23 42 views
1

平衡我有一个microservice landscape与春云发现配置,以便我能够访问其他服务实例只是用自己的ID:整合春云负载KeycloakRestTemplate

public class MyClass { 

    @Autowired 
    @LoadBalanced 
    private RestTemplate restTemplate; 

    public String doOtherStuff() { 
     String results = restTemplate.getForObject("http://stores/stores", String.class); 
     return results; 
    } 
} 

现在我想访问其需求的服务OAuth2授权。我使用Keycloak服务器来提供它,而Keycloak已经提供了一个具有特定KeycloakRestTemplate的适配器。无论如何,如何使用load balancing来增强它?

回答

2

我们需要创建一个将使用一个特定的KeycloakRestTemplate一个LoadBalancerInterceptor

@Configuration 
@EnableWebSecurity 
@ComponentScan(basePackageClasses = KeycloakSecurityComponents.class) 
public class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter { 

    @Bean 
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) 
    @LoadBalanced 
    public KeycloakRestTemplate keycloakRestTemplate(
      KeycloakClientRequestFactory keycloakClientRequestFactory, 
      LoadBalancerInterceptor interceptor) { 
     KeycloakRestTemplate result = new KeycloakRestTemplate(
      keycloakClientRequestFactory); 
     // Add the interceptor for load balancing 
     result.getInterceptors().add(interceptor); 
     return result; 
    } 

    //More configurations for keycloak 

} 

因此,有越来越授权/ LoadBalanced模板的机会:

@Autowired 
@LoadBalanced 
protected KeycloakRestTemplate restTemplate; 

参见:

+0

不错的解决方案。 :) – Scott