You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Cloud OAuth2调用认证服务器报Connection refused无法获取用户信息

问题根因排查方向

1. 网络访问层面问题(90%概率是这个原因)

你直接用Postman调用认证服务接口正常,但是组织服务调用报连接拒绝,本质是组织服务运行环境无法访问到你本地8901端口的认证服务,常见场景:

  • 组织服务运行在Docker容器/虚拟机/其他局域网机器中:容器/虚拟机内的localhost指向的是容器/虚拟机自身,不是宿主机,自然无法访问宿主机上启动的认证服务。
    解决方案:将组织服务application.yml中security.oauth2.resource.userInfoUri的localhost替换为宿主机的局域网IP(比如192.168.3.12这类本地网卡IP),如果是Docker Compose部署则替换为认证服务的服务名。
  • 认证服务仅绑定了本地回环地址:查看认证服务的监听地址,执行命令:
    • Windows:netstat -ano | findstr 8901
    • Linux/Mac:netstat -tunlp | grep 8901
      如果监听地址是127.0.0.1:8901,则只有本机进程能访问,需要在认证服务的application.yml中添加配置server.address: 0.0.0.0,让认证服务监听所有网卡地址。
  • 组织服务环境配置了HTTP代理:如果组织服务的启动参数配置了全局HTTP代理,会导致请求localhost时走代理失效,添加启动参数禁用本地地址代理即可:
    -Dhttp.nonProxyHosts=localhost|127.0.0.1|*.local
    

2. 配置校验

  • 确认认证服务启动端口确实为8901:查看认证服务启动日志,没有端口占用、端口自动漂移的报错。
  • 确认调用组织服务时携带的Token,和你直接调用/auth/user接口的Token为同一个,避免Token过期/无效问题。
  • 补充组织服务的OAuth2客户端配置:Spring Cloud Hoxton版本的资源服务器使用userInfoUri校验Token时,部分场景需要补充客户端配置,在组织服务application.yml中添加:
    security:
      oauth2:
        client:
          client-id: eagleeye
          client-secret: "{noop}thisissecret"
          access-token-uri: http://localhost:8901/auth/oauth/token
          user-authorization-uri: http://localhost:8901/auth/oauth/authorize
        resource:
          userInfoUri: http://localhost:8901/auth/user
    

3. 验证步骤

直接在组织服务运行的环境(容器/虚拟机/对应服务器)中,用curl命令调用认证服务接口,确认网络连通性:

curl -H "Authorization: Bearer 你的有效Token" http://{你配置的IP}:8901/auth/user
  • 如果curl返回正常,说明是组织服务代码层面的配置问题,检查是否自定义了RestTemplate、是否有拦截器拦截了OAuth2的用户信息请求。
  • 如果curl返回连接拒绝,继续排查前面的网络层面问题即可。

内容的提问来源于stack exchange,提问作者Marina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:45:04