应用程序上下文是一个使用MongoDB和Keycloak服务器(使用OpenID进行授权)的Node.js应用程序。对于开发环境,我们有一个Mongo容器、一个Keycloak容器和一个应用服务器容器。
Keycloak容器的端口映射在8080上,这样我就可以通过
应用程序容器的端口映射在9000上,以便在
所有3个容器都在像
在应用程序内,管理与Keycloak进行OpenID身份验证所需的信息的环境变量如下:
有没有标准的方法可以解决这个问题?也许可以将docker dns中的localhost重定向到docker主机?还有其他方法吗?
Keycloak容器的端口映射在8080上,这样我就可以通过
http://localhost:8080
访问Keycloak配置控制台。应用程序容器的端口映射在9000上,以便在
http://localhost:9000
上访问应用程序本身。所有3个容器都在像
application_default
这样的Docker网络中(使用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
并不是指向我的个人电脑(和keycloak)而是指向应用程序容器。
现在当我替换为
APP_KEYCLOAK_REALM="http://keycloak:8080/auth/realms/myrealm"
应用程序可以访问Keycloak,但在进行身份验证时,我的浏览器卡住了,试图将我重定向到一个与其无关的URL进行授权,该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主机?还有其他方法吗?
有没有标准的方法可以解决这个问题?也许可以将docker dns中的localhost重定向到docker主机?还有其他方法吗?