【问题标题】:Spring cloud loadBalanced userInfoUri problemsSpring cloud loadBalanced userInfoUri 问题
【发布时间】:2017-05-22 01:39:38
【问题描述】:

我用的是spring cloud,布局如下:

  • 注册服务器
  • oauth2 服务器
  • zuul 代理
  • 一个简单的 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

我尝试调试,但是这个空指针异常在 rest 模板实现中发生得很深。拜托,我在这里需要一些帮助。

【问题讨论】:

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


    【解决方案1】:

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

    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
          ...
    

    【讨论】:

      【解决方案2】:

      请检查您获得的令牌是否包含有关用户的完整信息。最重要的是用户名。它应该在生成令牌时设置。解析令牌here可以看到令牌里面有什么信息

      【讨论】:

        猜你喜欢
        • 2015-12-19
        • 2016-09-29
        • 2021-04-20
        • 1970-01-01
        • 2017-05-09
        • 2020-06-22
        • 2019-04-23
        • 2021-03-23
        • 2018-11-11
        相关资源
        最近更新 更多