2017-07-23 43 views
1

应用程序上下文是带有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:8080APP_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主机?其他?

回答

0

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

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

相关问题