2017-07-23 42 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

相關問題