spring cloud feign Security消费端调用401

在使用feign消费者调用提供者的时候 “返回认证” 报错
Full authentication is required to access this resource

详细错误
{"timestamp":1524018915085,"status":401,"error":"Unauthorized","message":"Full authentication is required to access this resource","path":"/activity-provider-service/user/add/12312321"}

直接访问提供者是可以成功的,通过消费者调用提供者服务就会报这个错误401

如果关闭掉security认证是可以访问成功的

clipboard.png

注册配置

clipboard.png

提供者

clipboard.png

调用者

clipboard.png

阅读 8.7k
2 个回答

解决办法添加拦截器

  1. 添加yml配置文件
security:
  oauth2:
    client:
      clientId: yourClientId
      clientSecret: yourClientSecret
      accessTokenUri: http://localhost:3000/oauth/token
      grant-type: client_credentials
      scope: service
    resource:
      user-info-uri: http://localhost:3000/me
  1. 编写Feign拦截器
@Configuration
public class FeignConfig {
    @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());
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题