当前位置: 首页 > 知识库问答 >
问题:

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

连翰
2023-03-14

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

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

共有1个答案

漆雕升
2023-03-14

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

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

并更改函数configure(…) ,行:

http。csrf()。csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())。和()

具有

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

这允许有一个解决方案来个性化cookieXSRF-TOKEN的路径。

 类似资料:
  • 我是一个Spring新手,正在制作一个Spring Web应用程序(不是Spring-boot,这有多大区别?)。部署在Tomcat7服务器上。 应用程序已启动并运行。我的问题是只能通过标准URL访问: http://mycompany.com:8081/cwing-0.0.3-snapshot/index.html 以下操作不起作用:http://mycompany.com:8081/cwing

  • 我必须在tomcat 7中部署我的app.war文件。的。war文件名后面是它的版本号。这里我需要设置一个上下文路径,这样实际的url将只包含应用程序名(没有版本号)。 我的要求是,服务器中不应该有编辑.xml。 这是我的背景。xml如下所示。 context.xml放在war at /META-INF文件夹中。谁能告诉我我错在哪里?

  • 有一个现有项目建立在Laravel 5.2.5和angularjs 1.7.4的基础上。这些页面不是由laravel生成的html页面,只是API。本项目应使用CSRF保护。 Angular文档说,$http服务将自动设置X-XSRF-TOKEN头。 执行XHR请求时,$http服务从cookie中读取令牌(默认情况下为XSRF-token),并将其设置为http头(默认情况下为X-XSRF-to

  • 我有这样的语法: 问题是,我不能在polygonType、pointList规则(除了POLYGON_分隔符,我需要使用逗号)和boolOperator规则(使用逗号)中同时使用逗号标记不同的规则。换句话说,如果我们将POLYGON_分隔符改为逗号,并用这样的值测试这样的语法 我们将得到一个错误 如果有人能帮我理解这个问题,我会很高兴的。 另外,如果我们不改变当前语法,测试的值是

  • > 我正在使用OWASP CSRFGuard 3.0保护这些Restful服务不受CSRF的影响。 当使用简单的超文本标记语言访问相同的Rest服务时-AJAX请求-CSRF令牌正在设置,我得到了响应: 下面的代码工作正常。 角度代码(我对角度代码非常陌生) 有人能建议我如何设置角形标记吗。 引自: 在寻找此问题的解决方案时,请阅读以下语句。 跨站请求伪造(XSRF)保护XSRF是一种技术,通过这

  • 我一直在尝试在具有Spring Security 3.2的Spring应用程序中为文件上传添加CSRF令牌。Spring Security CSRF留档建议我们在Spring Security过滤器之前添加,以便在完全没有Spring Security的情况下临时文件上传成为可能(因此也无需CSRF检查)。但这不会不安全吗?虽然,为了至少有一个工作的软件,我应用了上述方法,但它不起作用。在错误日志