gpt4 book ai didi

docker - docker 网桥模式下的 Keycloak 授权 : how to access localhost?

转载 作者:行者123 更新时间:2023-12-01 04:47:32 25 4
gpt4 key购买 nike

应用程序上下文是一个带有 mongo db 的 node js 应用程序,使用 keycloak 服务器进行具有开放 ID 的授权。对于开发环境,我们有一个 mongo 容器、一个 keycloak 容器和应用服务器容器。

Keycloak 容器在 8080 上有一个端口映射,以便我可以访问 http://localhost:8080 上的 keycloak 配置控制台.

应用程序容器在 9000 上有一个端口映射,可以在 http://localhost:9000 上访问应用程序本身。 .

所有 3 个容器都在一个 docker 网络内,如 application_default (从 docker compose 开始)。

在应用程序内部,使用 keycloak 进行 openid 身份验证所需的信息由以下环境变量管理:

# KEYCLOAK CREDENTIALS
APP_KEYCLOAK_REALM="http://localhost:8080/auth/realms/myrealm"
APP_KEYCLOAK_RETURN_URL="http://localhost:9000/api/auth/openid/return"
APP_KEYCLOAK_CLIENT_ID=myapplication
APP_KEYCLOAK_CLIENT_SECRET="00d5c908-eade-4e26-bcf0-b9341ghie197"

这些设置不起作用,通常实际上是在应用程序容器内部, APP_KEYCLOAK_REALM localhost:8080 的值不是指我的 PC(和 keycloak),而是指应用程序容器。

现在当我替换为
APP_KEYCLOAK_REALM="http://keycloak:8080/auth/realms/myrealm"

该应用程序可以转到 keycloak,但随后进行身份验证时,我的浏览器卡住了,试图将我重定向到一个对他没有任何意义的 url,以 http://keycloak:8080/auth/realms... 开头。

我设法使配置工作的唯一方法是将我的 PC 的实际 IP 地址放在环境文件中:
# KEYCLOAK CREDENTIALS
APP_KEYCLOAK_REALM="http://192.168.1.34:8080/auth/realms/myrealm"
APP_KEYCLOAK_RETURN_URL="http://192.168.1.34:9000/api/auth/openid/return"
APP_KEYCLOAK_CLIENT_ID=myapplication
APP_KEYCLOAK_CLIENT_SECRET="00d5c908-eade-4e26-bcf0-b9341ghie197"

这有效,但似乎不是可移植性的理想选择(IP 地址一直在变化)。

有没有标准的方法来做到这一点?可以将 docker dns 中的 localhost 重定向到 docker 主机吗?其他的?

最佳答案

您可以做的事情很少。一种是使用本地主机条目作为 keycloak 主机。这样您的主机上的浏览器将识别 keycloak 主机并将其用于身份验证。

否则你不应该这样做。您应该放置一个 nginx 容器,其端口 80 映射到主机。然后你可以使用基于 url 的模式重定向到端口 8000 或 9000

关于docker - docker 网桥模式下的 Keycloak 授权 : how to access localhost?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45263225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com