如何将 CSRF 令牌设置为不同的上下文路径

2024-01-13

我们基于 Angular 的 Web 应用程序与在不同域和上下文路径上运行的企业门户集成。我正在使用基于 Spring Security 的 CSRF 令牌来验证传入请求。该应用程序在本地完美运行,但当我将其与门户集成时,所有 post 调用都失败 403,因为 Angular 无法读取 XSRF-Token 并将请求标头中的 X-XSRF-Token 设置为 API 调用。经过调查,我发现门户和我们的应用程序的上下文路径不同,因此 spring 将 XSRF-Token 的 Path、Expires 和 domain 设置为 Null。有什么方法可以在 Spring 创建 XSRF-Token 时将其设置为特定的 cookie 路径吗?

注意:我有一个替代解决方案来创建过滤器并从请求标头读取 cookie,并使用我想要的路径在浏览器上放置一个新的 cookie。我正在寻找配置级别的解决方案。


在您的配置安全性(Java 文件)中,可以添加:

private CsrfTokenRepository getCsrfTokenRepository() {
    CookieCsrfTokenRepository tokenRepository = CookieCsrfTokenRepository.withHttpOnlyFalse();
    tokenRepository.setCookiePath("/");
    return tokenRepository;
}

并改变功能configure(...),行:

http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).and()...

with

http.csrf().csrfTokenRepository(this.getCsrfTokenRepository()).and()...

这允许有一个解决方案来个性化 cookie 的路径XSRF-TOKEN.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 CSRF 令牌设置为不同的上下文路径 的相关文章

随机推荐

  • TensorFlow:如何根据历元设置学习率衰减?

    学习率衰减函数tf train exponential decay需要一个decay steps范围 每隔一段时间降低学习率num epochs 你会设置decay steps num epochs num train examples b
  • Apache、SSL 客户端证书、LDAP 授权

    我在 serverfault com 上发布了这个问题 但没有答案 所以我在这里尝试 是否可以混合 mod ssl 和 mod auth ldap 以便使用客户端证书进行身份验证并使用 mod auth ldap 进行授权 需要 ldap
  • javax.servlet.ServletException:包装器找不到 servlet 类

    我已经从 Jasper Reports for Java Developer 第 3 章 中制作了一个 servlet 它将在浏览器上显示 Jasper Report 该 Servlet 如下所示 public class FirstRep
  • 如何抑制 Visual Studio 2017 (C#) 中的初始构建后事件错误?

    我在 Visual Studio 2017 中有一个 C 解决方案 我还有一个名为的批处理脚本foobar bat其中包含以下代码 echo foobar error 1 This is a test error 我的目标是得到only当我
  • new之后直接调用方法?

    PHP 是否允许像这样调用新对象的方法 new CEntry new Control gt actuate 我可以传递一个新对象作为参数 如下所示new Control 然而 它似乎不喜欢 actuate 调用 我收到错误 Parse er
  • 如何使用 C++ 中具有多个参数的 if 语句调用多个函数

    该程序针对每种条件运行所有函数 而它应该只针对每种条件运行一个函数 为什么 我应该编写计算球体 圆柱体和圆锥体的体积和表面积的函数 我无法弄清楚是 if 语句弄乱了 还是函数本身弄乱了 该程序的理想输出如下 选择形状 1 球体 2 圆柱体
  • 从 node-mysql 连接到 Amazon RDS (MySQL) 时出错

    我正在尝试使用 felixge node mysql 包从 Lambda 中托管的 Nodejs 代码连接到我的 Amazon RDS MySQL 实例 我需要帮助来找出我做错了什么 我收到 连接 ETIMEDOUT 错误 我的代码托管在
  • 不同源文件中的 D 模板特化

    我最近问this https stackoverflow com questions 6328444 type classes in d有关如何在 D 中模拟类型类的问题 并建议了一种使用模板专业化来实现此目的的方法 我发现 D 无法识别不
  • 基于不同XAML的样式继承

    如何将样式中的 BasedOn 标记指定为在其他文件中定义的样式 Example Dictionary1 xaml 定义 在 Dictionary2 xaml 中我需要类似的东西
  • 从 pandas 数据框中删除闰年日

    我有福尔 数据框 datetime 2012 01 01 125 5010 2012 01 02 125 5010 2012 01 03 125 5010 2012 02 04 125 5010 2012 02 05 125 5010 20
  • 我是否需要担心“Rc”的开销?

    我是否正确地假设唯一 放慢速度 的事情Rc问题是它会在对象删除时检查是否释放该对象 除此之外 取消引用的开销是 多少 Rc 即我应该关心它吗 这两个函数几乎同样快吗 或者说速度上有明显的区别吗 fn test with box let b
  • 日志记录和同步

    我刚刚编写了自己的日志框架 非常轻量级 不需要大型日志框架 它由一个接口 ILogger 和许多实现该接口的类组成 我有一个问题是 TGUILogger 它采用 TStrings 作为日志记录目标 并将日志记录与主线程同步 以便列表框的 I
  • Linux 中如何给线程命名? [复制]

    这个问题在这里已经有答案了 我有一个用 C C 编写的多线程 Linux 应用程序 我有为我的线程选择名称 https stackoverflow com questions 149932 naming conventions for th
  • Java正则表达式跳过匹配

    我有一些文字 我想提取不以标点符号分隔的单词对 这是代码 n grams Pattern p Pattern compile a z if n 2 p Pattern compile a z a z if n 3 p Pattern com
  • 如何在supervisor中添加延迟到受监督进程 - linux

    我添加了一个使用 python cassandra 库的 Bottle 服务器 但它存在以下错误 Bottle FATAL Exited too quickly process log may have details 日志显示 File
  • Android JNI 本机 C 函数调用杀死活动

    什么有效 我有一个运行 TUN TAP 服务的 c 可执行文件 以及两个在终端中运行良好的 shell 脚本 用于配置 ip 路由 和 iptables 全部以 root 身份运行 什么不起作用 我正在尝试创建一个 Android 应用程序
  • 如何在 Python 中提取字符串中的列表?

    我使用 Pandas 导入了 CSV 并用字符串条目读入了一列 检查本系列 专栏 的条目 我发现它们实际上应该是列表 例如 df A pd Series entry11 entry21 entry22 entry31 entry32 我想从
  • Windows批处理文件中的一个数字既大于又小于另一个

    我的批处理文件中有以下代码 if bakfilesize geq freespacet echo baksize is larger if bakfilesize leq freespacet echo baksize is smaller
  • 如何在服务生成器类中添加http拦截器

    我创建了一个单独的服务生成器类 如本指南所示https futurestud io tutorials retrofit 2 manage request headers in okhttp interceptor https future
  • 如何将 CSRF 令牌设置为不同的上下文路径

    我们基于 Angular 的 Web 应用程序与在不同域和上下文路径上运行的企业门户集成 我正在使用基于 Spring Security 的 CSRF 令牌来验证传入请求 该应用程序在本地完美运行 但当我将其与门户集成时 所有 post 调