Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 在代理后运行KeyClope时,令牌颁发者无效_Apache_Reverse Proxy_Keycloak - Fatal编程技术网

Apache 在代理后运行KeyClope时,令牌颁发者无效

Apache 在代理后运行KeyClope时,令牌颁发者无效,apache,reverse-proxy,keycloak,Apache,Reverse Proxy,Keycloak,我已将KeyClope服务器置于apache proxy之后: ProxyRequests On ProxyVia On ProxyPreserveHost On SSLProxyEngine On SSLProxyCheckPeerCN on SSLProxyCheckPeerExpire on <LocationMatch "/auth/"> ProxyPass http://keycloak:8090/auth/ Keepalive=On </LocationMa

我已将KeyClope服务器置于apache proxy之后:

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/"
我已成功登录,但在发出服务器请求后,筛选器(
org.keydape.jaxrs.jaxrsbealertokenfiltermimpl
来自
keydape-jaxrs-誓言-client-4.0.0.FINAL
)正在引发异常:

WWW-Authenticate:Bearer-realm=“local”,error=“无效的\u令牌”, 错误\u description=“令牌颁发者无效。应为 ”“是的,但是 '''

我错过了什么?我曾期望,反向代理对于KeyClope是透明的。。。我在KeyClope管理面板中也找不到将localhost添加到有效发行者的选项


如何使该设置正常工作

这是一个常见的问题,因为KeyClope通过生成令牌的颁发者验证所放置令牌的颁发者。在您的例子中,令牌是由
http://keycloak:8090/auth/realms/local
但在给定的令牌颁发者中是您的代理服务器FQDN,即
http://localhost/auth/realms/local

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

此外,如果您使用Docker映像,您还应该配置KeyClope,使其使用代理标头,并使用环境变量
proxy\u ADDRESS\u FORWARDING=true
执行此操作

看看文档[1],你会在那里找到更多答案。
[1]

这实际上无助于理解或解决问题。
{
  "realm" : "local",
  "auth-server-url" : "/auth",
  "ssl-required" : "external",
  "resource" : "client-local",
  "public-client" : true
}