我正在尝试让nodeJS keycloak adapter使用我的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。 对预检请求的响应没有通过访问控制检查:否 '访问控制允许来源'标题出现在请求的上 资源。起源' http://localhost:5001'因此是不允许的 访问。
在我的keycloak客户端设置中,我添加了单个值' *'到Web Origins配置部分。
我还使用节点cors库在我的节点表达应用程序上启用了cors,遵循此快速指南here
var cors = require('cors'),
app = express();
app.use(cors());
app.options('*', cors()); //enable for all pre-flight requests
我使用版本3.2.1的keycloak以防万一(我看到新版本作为RC)
是否有人遇到类似问题并设法解决?我一直在挖掘许多JBOSS邮件列表线程和其他堆栈溢出,似乎所有人都建议它像添加' *'一样简单。在keycloak管理网站上输入客户端的网络起源配置部分,但对我来说情况并非如此。
由于
答案 0 :(得分:6)
我也在使用mindparse处理这个问题。
我认为这里的关键问题是keycloak服务器没有响应任何ACCESS-CONTROL-ALLOW-ORIGIN标题,尽管他已经正确配置了" web Origins"在keycloak管理门户中设置。
更深入的流程是:
答案 1 :(得分:0)
我有完全相同的问题。我正在使用Keycloak 6.0.1
就我而言,我必须在Java后端服务器的"enable-cors": true
中添加keycloak.json
。
答案 2 :(得分:0)
只需将您的应用程序的网址(例如“ http://localhost:8081”放在Keycloak客户端设置的“ Web Origins”字段中即可。
答案 3 :(得分:0)
我在尝试连接到 KeyCloak 时也遇到了 CORS 问题,即使我已经正确填写了“Web Origins”网址。
结果我不小心连接到了错误的应用程序(客户端)和租户(领域),因此没有通过 CORS 检查。指向正确的应用程序和租户解决了我的问题。