为什么 keycloak-client-adapter 通过 http 连接?

问题描述 投票:0回答:1

我正在 Apache 反向代理后面的 Wildfly 服务器上运行 JEE 应用程序。使用 keycloak-client-adapter,它连接到同样位于 apache 反向代理后面的 Keycloak 服务器。两个反向代理都会终止 SSL 连接并通过 http 连接到 Wildfly 服务器。

当我打开 JEE 应用程序时,我会被重定向到 Keycloak,在输入密码后,我也会重定向到我的应用程序 - 全部通过反向代理通过 SSL 进行。但随后我收到了 403 - 原因是:应用程序 Wildfly 尝试连接到 Keycloak 以验证 http 上的令牌。这是不允许的(keycloak.json 中的“ssl-required”:“all”并在领域中设置),http 也根本不处于活动状态。

来自应用程序 Wildfly server.log

Adapter requires SSL. Request: http://www.domain.tld/myapp/

我已经根据文档设置了Keycloak的反向代理,.well-known/openid-configuration看起来不错 - 所有URL都是https

keycloak.json

{
  "realm": "myrealm",
  "auth-server-url": "https://sso.domain.tld/auth",
  "ssl-required": "all",
  "resource": "myresource",
  "verify-token-audience": true,
  "credentials": {
    "secret": "secret"
  },
  "use-resource-role-mappings": true,
  "confidential-port": 443,
  "policy-enforcer": {}
}

应用程序的反向代理设置

ProxyPreserveHost    On

ProxyPass /myapp http://127.0.0.1:8080/myapp
ProxyPassReverse /myapp https://www.domain.tld/myapp

有人知道如何在验证中强制使用 https 吗?这应该是运行设置的最后一步。

wildfly reverse-proxy keycloak
1个回答
0
投票

这个聚会有点晚了,但您还需要在 Wildfly 应用程序的反向代理中使用

ProxyVia On
。 (假设您通过暂时禁用 keycloak.json 中的信任管理器来确认这不是证书问题。)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.