【问题标题】:Keycloak duplicated "Access-Control-Allow-Origin" causing cors errorKeycloak重复“Access-Control-Allow-Origin”导致cors错误
【发布时间】:2022-01-26 17:42:38
【问题描述】:

我在 React 前端使用 keycloak-js 适配器时遇到问题。

/token 端点上登录重复的“Access-Control-Allow-Origin”后会导致 CORS 错误:

从源“https://example.com”访问“https://accounts.example.com/auth/realms/myRealm/protocol/openid-connect/token”处的 XMLHttpRequest 已被 CORS 策略阻止:“Access-Control-Allow-Origin”标头包含多个值“https://example.com,*”,但仅一个是允许的。

响应头:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Access-Control-Allow-Methods

Keycloak 9 在 https://accounts.example.com 上的 Nginx 代理后面以独立模式运行。

keycloak-js 适配器配置:

{
  "realm": myRealm,
  "url": https://accounts.example.com/auth,
  "clientId": myClientId,
  "enable_cors": true
}

我已经为客户端“Web Origins”尝试了多种组合:

https://example.com*+,但我不知道为什么我有一个额外的标题Access-Control-Allow-Origin: *

【问题讨论】:

  • @EI capitán 面临同样的问题并尝试了像你这样的所有方法......有什么解决方案吗?

标签: http-headers cors keycloak


【解决方案1】:

我们发现我们自己的代理也在编写 Access-Control-Allow-Origin 标头。这就是为什么我们与 keycloak 一起获得了两次。

我们的 devops 团队已经修复了我们代理的代码,它现在可以工作了。

【讨论】:

  • 感谢您的想法,对我们来说是一样的。 Devops 为我们提供了一个链接,可以绕过代理服务器直接访问该服务 -> 并且成功了。
  • 酷!我很高兴它有帮助!我们花了相当长的时间来解决这个问题(
【解决方案2】:

对于在 https 上运行的站点,* 不是 Access-Control-Allow-Origin 的有效值。

从 Keycloak 中的 Web 源客户端配置中删除 *,并显式配置所有使用的 Web 源(无通配符)。

【讨论】:

    猜你喜欢
    • 2021-05-12
    • 1970-01-01
    • 2021-06-17
    • 2019-08-08
    • 2020-12-14
    • 2019-09-20
    • 2014-12-30
    • 2016-09-30
    • 2021-10-09
    相关资源
    最近更新 更多