如何修复我的 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 中的“我们很抱歉需要 HTTPS”?
如何修复 react app 和 coinbase connect api 上的 cors 错误
如何修复 Angular 1 + ajax + CORS 策略上的 No 'Access-Control-Allow-Origin' 标头? [复制]