我在由Docker组成的网络中运行Keycloak,keycloak安全代理和ui应用程序。当我尝试访问该网页时,会得到一个登录页面,我可以使用该登录页面-但未成功重定向,却出现以下错误:

> Aug 03, 2018 1:13:24 PM org.keycloak.adapters.OAuthRequestAuthenticator resolveCode
ERROR: failed to turn code into token
java.net.ConnectException: Connection refused (Connection refused)
      at java.net.PlainSocketImpl.socketConnect(Native Method)
      at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
      at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
      at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
      at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
      at java.net.Socket.connect(Socket.java:589)

无论我代理哪种应用程序,还是在Docker-compose或仅作为节点运行它的情况下,我都会收到此错误。当我尝试使用python适配器而不是安全代理时,它也可能会出现。

整个网络都在公司代理后面运行,这可能是原因吗?

考虑到代码似乎已发送(请参见下文),因此Keycloak至少可以验证用户身份。但是我很困惑如何解决这个问题。有没有人有什么想法?



我的proxy.json文件是:
{
   "target-url": "http://localhost:7005",
   "bind-address":"0.0.0.0",
   "http-port":"8080",
   "applications":[
      {
        "base-path":"/",
        "adapter-config":{
            "realm":"realm",
            "resource":"realm_ui",
            "auth-server-url":"http://localhost:8800/auth",
            "ssl-required":"external",
            "credentials": {
             "secret":"secret"
            },
            "confidential-port":0
        },
        "constraints":[
            {
               "pattern":"/*",
               "roles-allowed":[
                  "user"
               ]
            }
         ]
      }
   ]
}

在 key 斗篷中:
Access Type: confidential
Standard Flow Enabled: ON
Direct Access Grands: ON
The Valid Redirect URI: *

最佳答案

搜索了一段时间后,我找到了解决方案。这是一个网络问题。
Keycloak OpenIDConnect身份验证流程遵循3个步骤,如此处所述:https://www.keycloak.org/docs/3.3/server_admin/topics/sso-protocols/oidc.html

步骤1和2已完成,但是从浏览器接收到临时代码后,该应用程序无法与Keycloak连接。在步骤1和步骤2中,始终是浏览器连接到应用程序或Keycloak,而不是它们彼此通话。

发生这种情况的原因是,在我的docker-compose文件中,我声明了覆盖了自动绑定(bind)到Keycloak和代理0.0.0.0的网络。此外,对于浏览器以及Keycloak安全代理的docker容器,用于连接Keycloak的auth-server-url必须为true。

关于docker - Docker中的 key 斗篷 "Failed to turn code into token",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51674331/

10-16 23:43