当前位置: 首页 > 知识库问答 >
问题:

在代理后面运行keycloak时无效的令牌颁发者

洪捷
2023-03-14

我已经将我的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.jaxrs.jaxrsbearerTokenFilterImplfromkeycloak-jaxrs-oath-client-4.0.0.final)抛出异常:

我如何才能使该设置工作?

共有1个答案

蓬长恨
2023-03-14

您的代理应该在代理上添加转发标头,例如x-forwarded-forx-forwarded-protox-forwarded-host,这将允许keycloak检索客户端(而不是反向代理)的原始IP,出于安全原因,这很重要。此外,Keycloak可以检索它出现在代理之外的主机名,这将有助于解决无效令牌颁发者问题。

另外,您应该配置Keycloak,使其使用代理头,如果您使用Docker映像,请使用环境变量proxy_address_forwarding=true执行此操作。

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

 类似资料:
  • 我有一个问题: WWW Authenticate Bearer realm=“test”,error=“invalid_token”,error_description=“invalid token issuer.Expected”http://keycloak:8080/auth/realms/test“但是”http://localhost:8080/auth/realms/test“ 我的设

  • 如果访问令牌请求是有效的且被授权,授权服务器如5.1节所述颁发访问令牌以及可选的刷新令牌。如果请求因客户端身份验证失败或无效,授权服务器如5.2节所述的返回错误响应。 5.1. 成功响应 5.2. 错误响应

  • 我正在使用来自这个github存储库的php oAU2库。 PHP oauth2库 每当我发送刷新令牌时,我都会收到带有旧作用域的新访问令牌。但我想更改使用新访问令牌返回的作用域。 当我第一次使用用户凭据授权类型生成令牌时,我会获取用户支持的作用域并以这种方式存储它们。 其中$scopes是一个数组 例如$scopes=array("ADDUSER "," EDITUSER "," EDITROL

  • 有谁有幸尝试使用vertx bihind作为公司代理?我已经尝试了我脑海中出现的任何可能的方式来向vertx提供代理信息。到目前为止没有任何效果。 设置环境变量http_proxy=http://mycorporate.proxy.com:8080-运气不好 设置环境变量VERTX_OPTS='-Dhttp.proxy主机=mycorporate.proxy.com-Dhttp.proxy端口=8

  • 我有一个React应用程序,它使用Keycloak作为身份验证服务。另外,我有一个Nodejs rest api,endpoint由keycloak保护,所以React应用程序在需要调用api时发送JWT。在Keycloak管理控制台中,我创建了一个带有用户和角色的公共客户端。 所有工作都很好,但唯一的问题是,当我通过管理控制台注销时,或者在过期之前从我的React应用程序注销时,我仍然可以用这些

  • 我有一个计划的WebJob,每天运行,检查数据库中所有用户的密码过期日期。如果密码到期日是今天,它将生成密码重置令牌并通过电子邮件发送给用户。然后用户单击电子邮件中的url,并被带到一个网站,在那里输入新密码。 我设法在我的WebWork中生成一个令牌,并通过电子邮件发送。但是,通过我的Asp重置密码时。NET网站我得到无效令牌。我不明白为什么。我假设它一定与我的WebWork中的令牌提供商有关。