Apache 在代理后运行KeyClope时,令牌颁发者无效
我已将KeyClope服务器置于apache proxy之后: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
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
}