java设置跨域白名单,解决 keycloak java adapter cors 白名单 URL 不携带有效 Token 无法跨域访问的问题...

当浏览器跨域请求由Keycloak adapter保护的后端服务时,即使预检请求通过,若请求未携带Token,响应头中不会包含Access-Control-Allow-Origin,导致浏览器无法获取数据。解决方案是在`AuthenticatedActionsHandler`类的`corsRequest`方法中,确保不携带Token的请求也会返回CORS头信息,以允许白名单URL进行跨域访问。
摘要由CSDN通过智能技术生成

问题描述:

浏览器跨域请求由 keycloak adapter 保护的后端服务,

后端服务设置为允许跨域,

非简单请求时,预检是通过的,

无论简单请求还是非简单请求,

如果请求不携带Token的话,

虽然后端服务成功执行了,

但是,响应header中不存在Access-Control-Allow-Origin,

导致,ajax脚本仍然无法获取后端返回的数据,

此时,浏览器控制台仍然会报:

No 'Access-Control-Allow-Origin' header is present on the requested resource

的错误。

从而导致,白名单中的 URL 无法被浏览器跨域访问了。

解决办法:

找到类:org.keycloak.adapters.AuthenticatedActionsHandler

方法:corsRequest

变动说明:追加红色字体部分,意思是,不携带Token的访问,也仍然返回 cors 头信息。

protected boolean corsRequest()  {

if (!deployment.isCors()) return false;

KeycloakSecurityContext securityContext = facade.getSecurityContext();

String origin = facade.getRequest(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值