【问题标题】:Can't connect to JHipster UAA server using Curl无法使用 Curl 连接到 JHipster UAA 服务器
【发布时间】:2023-03-27 11:35:02
【问题描述】:

我正在运行一个带有注册表、网关 (8080)、uaa (9999) 和 2 个微服务(8081 和 8082)的 docker-compose 架构,我可以通过下拉选择在网关应用程序中看到 Swagger API。我可以使用管理员和用户登录网关。我还修改了代码以接受所有者、代理和监控角色。我可以正常登录。

在终端中,我尝试使用 Baeldung 的 curl 命令(博客发布)直接从 uaa 服务器获取令牌以测试 API。

[~]$ curl -X POST --data  "username=user&password=user&grant_type=password&scope=openid"  http://localhost:9999/oauth/token
    curl: (7) Failed to connect to localhost port 9999: Connection refused

我打开 Kitematic 并且 uaa 服务器是 docker 容器日志中的 localhost(主机)和 9999(端口)。

有人可以帮我弄清楚为什么 Curl 不适合我吗?

谢谢,

大卫

【问题讨论】:

  • 您是从主机发出 curl 命令吗?而且,您可以在您的问题中发布 docker-compose 定义吗?

标签: docker oauth docker-compose token jhipster


【解决方案1】:

这个问题几乎肯定与您正在部署的堆栈的网络属性有关。

如果您从主机发出 curl 命令到 http://localhost:9999,那么您需要确保 UAA 服务器将其端口映射到主机。

您的 UAA 服务在 docker-compose.yml 中有这个吗?

    ports:
      - "9999:9999"

如果没有,您需要添加它以便从主机测试它。

默认情况下,docker-compose 将为您的堆栈创建一个桥接网络,您的容器可以在其中相互通信并根据容器名称相互解析。但是从主机上,除非您将容器暴露的端口显式映射到主机上的端口,否则您将无法寻址容器。

【讨论】:

  • 我必须添加...端口:“9999:9999”才能访问 Docker 容器中的 localhost:9999。现在我上面的 curl 调用给了我一个 HTTP 401 - 未经授权。我需要为我的 OAuth (uaa) 服务器找到正确的 cURL 调用。我希望能够在 Gateway 应用程序之外测试我的新 API 并编写 Angular 代码。我想编写 Javascript npm 请求调用(异步)来测试 API。我会给你一个 +1 投票,因为缺少双端口映射是应用程序可以登录而我在容器内看不到 localhost 的原因。谢谢。
  • 嗨@DavidWhitehurst!你解决问题了吗?你有什么要补充的?
  • 见。新问题,我对令牌的调用可能是错误的。
  • 感谢您接受答案 - 希望您解决 UAA 服务器的身份验证问题!
猜你喜欢
  • 2016-11-25
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 2019-09-18
相关资源
最近更新 更多