gpt4 book ai didi

apache - 在代理后面运行 keycloak 时 token 颁发者无效

转载 作者:行者123 更新时间:2023-12-04 12:56:52 29 4
gpt4 key购买 nike

我已经将我的 keycloak 服务器放在 apache 代理后面:

ProxyRequests On
ProxyVia On
ProxyPreserveHost On
SSLProxyEngine On
SSLProxyCheckPeerCN on
SSLProxyCheckPeerExpire on
<LocationMatch "/auth/">
ProxyPass http://keycloak:8090/auth/ Keepalive=On
</LocationMatch>
ProxyPassReverse "/auth/" "http://keycloak:8090/auth/"

我已经成功地告诉我的 javascript 端的 keycloak 使用/auth 进行身份验证:
{
"realm" : "local",
"auth-server-url" : "/auth",
"ssl-required" : "external",
"resource" : "client-local",
"public-client" : true
}

我已经成功登录,但是在发出服务器请求后,过滤器( org.keycloak.jaxrs.JaxrsBearerTokenFilterImpl 来自 keycloak-jaxrs-oath-client-4.0.0.FINAL )抛出异常:

WWW-Authenticate: Bearer realm="local", error="invalid_token", error_description="Invalid token issuer. Expected 'http://keycloak:8090/auth/realms/local', but was 'http://localhost/auth/realms/local'"



我在这里缺少什么?我已经预料到,反向代理对 keycloak 来说是透明的......我也找不到将 localhost 添加到 keycloak 管理面板中的有效发行者的选项......

我怎样才能使该设置发挥作用?

最佳答案

您的代理应在代理上添加转发 header ,例如 X-Forwarded-For , X-Forwarded-ProtoX-Forwarded-Host ,这将允许 keycloak 检索客户端(而不是反向代理)的原始 IP,这对于安全原因很重要。此外,Keycloak 可以检索它的主机名,因为它出现在代理之外,这应该有助于解决无效的 token 颁发者问题。

此外,您应该配置 Keycloak 以便使用代理 header ,如果您使用的是 Docker 镜像,请使用环境变量 PROXY_ADDRESS_FORWARDING=true 执行此操作。 .

看看文档 [1],你会在那里找到更多的答案。
[1] https://www.keycloak.org/docs/4.8/server_installation/#_setting-up-a-load-balancer-or-proxy

关于apache - 在代理后面运行 keycloak 时 token 颁发者无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51554178/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com