應用程序上下文是帶有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主機?其他?