我使用spring cloud,采用以下布局:
在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异常在休息模板实现上发生得很深。拜托,我需要一些帮助。
答案 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
来查看令牌中的信息