我正在尝试让 nodeJS keycloak 适配器 与我的 Express 应用程序一起使用,但是当它尝试重定向到我使用 keycloak 中间件保护的路由的登录页面时遇到了 CORS 问题:
XMLHttpRequest 无法加载 http://192.168.132.44:8080/auth/realms/Actora/protocol/openid-connect/auth?client_id=actora-test&state=0e9c9778-c41b-4aa8-8052-d0f0125045ac&redirect_uri=http%3A%2F%2Flocalhost %3A5001%2Fauth%2Fchecktoken%3Fauth_callback%3D1&scope=openid&response_type=code 。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“ http://localhost:5001 ”。
在我的 keycloak 客户端设置中,我在 Web Origins 配置部分添加了一个“*”值。
我还使用 node cors 库在我的 node express 应用程序上启用了 cors,遵循 这里 的快速指南
var cors = require('cors'),
app = express();
app.use(cors());
app.options('*', cors()); //enable for all pre-flight requests
我使用 3.2.1 版本的 keycloak 以防万一(我看到一个新版本作为 RC 发布)
有没有人遇到过类似的问题并设法解决?我一直在研究许多 JBOSS 邮件列表线程和其他 stackoverflows,并且似乎都暗示它就像在 keycloak 管理站点上为客户端的 web 起源配置部分添加“*”条目一样简单,但情况并非如此我。
谢谢
原文由 mindparse 发布,翻译遵循 CC BY-SA 4.0 许可协议
我也在用 mindparse 解决这个问题。
我认为这里的关键问题是 keycloak 服务器没有响应任何 ACCESS-CONTROL-ALLOW-ORIGIN 标头,尽管他已经在 keycloak 管理门户中正确配置了“web Origins”设置。
该过程的更深入流程是: