如何修复我的 keycloak 上的 cors 错误以使其正常工作?

Posted

技术标签:

【中文标题】如何修复我的 keycloak 上的 cors 错误以使其正常工作?【英文标题】:How to fix cors error at my keycloak to make it work? 【发布时间】:2021-03-19 21:46:51 【问题描述】:

我尝试到达这个 keycloak 端点:http://10.10.10.10:8999/auth/realms/demo-realm/protocol/openid-connect/token

我添加了 client_secret、grant_type 和 client_id。然后,当我从前端应用程序发送请求时,我得到了这个错误:

访问 XMLHttpRequest 在 来自来源“http://localhost:4200”的“http://10.10.10.10:8999/auth/realms/demo-realm/protocol/openid-connect/token”已被 CORS 策略阻止: 请求中不存在“Access-Control-Allow-Origin”标头 资源。

我的 keycloak 设置如下:

-机密客户

-有效的重定向 URI:*

-web 来源:+ 或 *(都尝试过)

还尝试将有效 uris 设置为 http://localhost:4200 和网络来源 + 或将 http://localhost:4200 添加到网络来源。

重要的是客户端必须保密,否则当我尝试使用 access_token 时,它不会包含资源 ID...

提前致谢

【问题讨论】:

这里,使用类似设置的帖子:symbiotics.co.za/… 我发现一些关于 Angular 和机密客户端的一些问题的帖子,有像你这样的问题。 Somes 认为它​​不接受http 调用,其他人则认为* 冲突。您可以在https 上提供您的密钥斗篷吗? 不,我不能。只有http。例如,我可以从 Postman 到达端点并取回 access_token。 使用 redirect_uri 参数向 Postman 发出请求? 您是否检查过您使用的客户端是否在令牌请求中包含 Origin 标头?浏览器通常会这样做,但其他客户端(例如 Postman)默认情况下不会这样做。如果不发送 Origin 标头,则不会设置 Access-Control-Allow-Origin。 【参考方案1】:

在 keycloak 客户端设置中,添加 http://localhost:4200/* 作为有效的重定向 URI。在网络起源中,+ 是最佳选择。

如果你使用 Java 适配器,还要设置enable-cors tor true(见https://www.keycloak.org/docs/latest/securing_apps/index.html#_java_adapter_config)

【讨论】:

老实说,我不知道如何将 enable-cors 设置为 true,但我尝试从角度使用 仅在 Java 适配器上 顺便说一句,我也试过这个。正是这个。 http://localhost:4200/*+【参考方案2】:

尝试添加:

webOrgins : localhost:4200

【讨论】:

以上是关于如何修复我的 keycloak 上的 cors 错误以使其正常工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 keycloak 和 nginx 上配置 cors?

keycloak CORS 过滤器弹簧靴

如何使用反向代理修复 Keycloak 中的“我们很抱歉需要 HTTPS”?

如何修复 react app 和 coinbase connect api 上的 cors 错误

如何修复 Angular 1 + ajax + CORS 策略上的 No 'Access-Control-Allow-Origin' 标头? [复制]

如何将keycloak迁移到mysql数据库并修复300异常后的超时