gpt4 book ai didi

angularjs - 如何配置 Spring Security 发送 'X-CSRF-TOKEN' ?

转载 作者:IT老高 更新时间:2023-10-28 13:50:07 30 4
gpt4 key购买 nike

问题是让 CSRF token 在 Spring Security 和 Angular 之间工作。

Spring Security CSRF Token Interceptor for Angular看起来应该可以完成这项工作,但服务器的 HEAD 响应中没有“X-CSRF-TOKEN”。

我目前的微型实现在 GitHub 中可用(标记 v.1.0)如果知道该主题的人能够快速查看代码,我将不胜感激,问题应该很容易发现。

根据文档,我的印象是应该自动启用 CSRF,但似乎并非如此。

如果需要进行不同的配置,我正在使用 Spring Boot,并且更喜欢基于注释的配置而不是 XML。

还有其他方法可以让 Spring Security 对抗 Angular 吗?

最佳答案

我相信Angular会寻找一个名为“XSRF-TOKEN”的cookie,所以对客户端来说最简单的事情就是发送它。例如,您可以在 Filter 中执行此操作(来自 https://github.com/spring-guides/tut-spring-security-and-angular-js/blob/master/single/src/main/java/demo/UiApplication.java#L65 的示例):

    private Filter csrfHeaderFilter() {
return new OncePerRequestFilter() {
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
CsrfToken csrf = (CsrfToken) request.getAttribute(CsrfToken.class
.getName());
if (csrf != null) {
Cookie cookie = new Cookie("XSRF-TOKEN", csrf.getToken());
cookie.setPath("/");
response.addCookie(cookie);
}
filterChain.doFilter(request, response);
}
};
}

更新:从 spring security 4.2 开始,如果您使用 cookie csrf 存储库(链接仍然是最佳来源),则默认使用正确的 angular cookie 名称,即不再需要自定义过滤器。示例:

@Configuration
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
protected static class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
...
.and()
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());

关于angularjs - 如何配置 Spring Security 发送 'X-CSRF-TOKEN' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27457442/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com