应用程序上下文是带有mongo db的节点js应用程序,使用keycloak服务器进行具有开放标识的授权。对于开发环境,我们有一个mongo容器,一个keycloak容器和一个应用程序服务器容器。Docker网桥模式下的Keycloak授权:如何访问本地主机?
Keycloak容器在8080上有一个端口映射,因此我可以访问http://localhost:8080
上的keycloak配置控制台。
应用程序容器在9000上有一个端口映射来访问应用程序本身http://localhost:9000
。
所有3个容器都位于码头网络内,如application_default
(以docker撰写开头)。
的应用程序中,需要与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"
这些设置不工作,非常正常其实作为应用程序容器内的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地址一直在改变)。
有没有一个标准的方法来做到这一点?可能会将docker dns中的localhost重定向到docker主机?其他?