Spring cloud loadBalanced userInfoUri问题

时间:2017-01-07 09:58:03

标签: java spring oauth-2.0 spring-cloud spring-cloud-netflix

我使用spring cloud,采用以下布局:

  • 注册服务器
  • oauth2服务器
  • zuul proxy
  • 一个简单的crud微服务

在crud服务上,我试图使用

对我的oauth2服务器进行身份验证
security:
   oauth2:
     resource:
       loadBalanced: true
       userInfoUri: http://auth_service/users/current

我可以从oauthserver获取令牌,但是当我使用令牌请求我得到的crud服务时

2017-01-07 10:46:02.638  INFO 16186 --- [nio-9001-exec-4] o.s.b.a.s.o.r.UserInfoTokenServices      : Getting user info from:    http://auth_service/users/current
2017-01-07 10:46:02.639  INFO 16186 --- [nio-9001-exec-4] o.s.b.a.s.o.r.UserInfoTokenServices      : Could not fetch user details: class java.lang.NullPointerException, null

如果我更改oauth客户端以在没有loadBalanced选项的情况下命中oauth服务器,它可以正常工作

security:
  oauth2:
    resource:
      userInfoUri: http://localhost:4444/auth_service/users/current #through zuul proxy

我尝试调试,但这个nullpointer异常在休息模板实现上发生得很深。拜托,我需要一些帮助。

2 个答案:

答案 0 :(得分:0)

我有类似的东西在尝试这个配置,看它是否可行。

zuul:
  routes:
    user-service:
      path: /user/**
      stripPrefix: false

security:
  # Disable Spring Boot basic authentication
  basic:
    enabled: false
  oauth2:
    client:
      accessTokenUri: http://<zuulHostname>/user/oauth/token
      userAuthorizationUri: http://<zuulHostname>/user/oauth/authorize
      ...

答案 1 :(得分:0)

请检查您获得的令牌是否有关于该用户的完整信息。最重要的是userName。应该在生成令牌时设置它。您可以通过解析令牌here

来查看令牌中的信息