解决spring cloud feign模式下 访问服务统一认证的问题

springCloud | 2020-03-06 16:25:47

前面全面讲解了 spring cloud 统一安全认证 搭建,参考 spring cloud oauth2 微服务 统一认证授权 框架搭建 。也解决了解决spring cloud feign模式下 访问服务统一认证的问题,这里单独提出来一下。

使用 @FeignClient 来实现无感知url调用服务,但是服务间调用接口时,是不包含token的,所以,我们要加下面的配置类,来将token放入feign调用之前。




/**
 * oauth client 配置
 * @Author: houyong
 * @Date: 2019/11/19
 */
@Configuration
public class OAuth2ClientConfig {

    /**
     * 下面bean配置 是为了解决 feign 模式下 统一验证凭证的问题,因为服务全部被保护起来了
     * @return
     */
    @Bean
    @ConfigurationProperties(prefix = "security.oauth2.client")
    public ClientCredentialsResourceDetails clientCredentialsResourceDetails() {
        return new ClientCredentialsResourceDetails();
    }
    @Bean
    public RequestInterceptor oauth2FeignRequestInterceptor(){
        return new OAuth2FeignRequestInterceptor(new DefaultOAuth2ClientContext(), clientCredentialsResourceDetails());
    }
	@Bean
    public OAuth2RestTemplate clientCredentialsRestTemplate() {
        return new OAuth2RestTemplate(clientCredentialsResourceDetails());
    }

}

 

对应application.properties 配置

#security
security.oauth2.client.access-token-uri=http://localhost:8100/oauth/token
security.oauth2.resource.user-info-uri=http://localhost:8100/user/current
security.oauth2.client.grant-type=client_credentials
security.oauth2.client.client-id=cloud_client
security.oauth2.client.client-secret=znxzEgClient888

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号