Tag: 工keywaak

码头网桥模式下的Keycloak授权:如何访问本地主机?

应用程序上下文是一个具有mongo db的节点js应用程序,它使用keycloak服务器进行具有开放标识的授权。 对于开发环境,我们有一个mongo容器,一个keycloak容器和一个应用程序服务器容器。 Keycloak容器在8080上有一个端口映射,以便我可以访问http://localhost:8080上的keycloak配置控制台。 应用程序容器具有9000上的端口映射,以便在http://localhost:9000上访问应用程序本身。 所有的3个容器都在docker网络里面,像application_default (用docker compose开始)。 在应用程序中,使用keycloak的openid auth所需的信息由以下环境变量管理: # 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" 这些设置不起作用,通常实际上是在应用程序容器内部, localhost:8080的APP_KEYCLOAK_REALM值不引用我的PC(和keycloak),而是引用到应用程序容器中。 现在,当我更换 APP_KEYCLOAK_REALM="http://keycloak:8080/auth/realms/myrealm" 应用程序可以去keycloak,但然后进行身份验证,我的浏览器卡住试图重定向我授权到一个网址,对他来说没有任何意义,以http://keycloak:8080/auth/realms… 我设法使配置工作的唯一方法是把我的电脑的实际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地址一直在改变)。 有没有一个标准的方法来做到这一点? 可能会重定向本地主机在码头的DNS到码头主机? 其他?