'X-CSRF-TOKEN'을 전송하도록 스프링 보안을 구성하는 방법은 무엇입니까?
문제는 Spring Security와 Angular 사이에서 CSRF 토큰을 작동시키는 것입니다.
Spring Security CSRF Token Interceptor for Angular는 작업을 수행해야 하는 것처럼 보이지만 서버의 HEAD 응답에 'X-CSRF-TOKEN'이 없습니다.
현재의 작은 구현은 GitHub(태그)에서 사용할 수 있습니다.v.1.0
) 그리고 주제를 잘 아는 사람이 코드를 빨리 보면 문제를 쉽게 발견할 수 있을 것 같습니다.
문서에 따르면 CSRF가 자동으로 활성화되어야 한다고 생각하지만 그렇지 않은 것 같습니다.
Spring Boot을 사용하고 있으며, 다르게 구성해야 할 경우 XML보다 주석 기반 구성을 선호합니다.
스프링 보안이 Angular에 대항할 수 있도록 하는 다른 접근법이 있습니까?
Angular는 "XSRF-TOKEN"이라는 쿠키를 찾기 때문에 고객에게 가장 쉬운 방법은 그것을 보내는 것입니다.당신은 그것을 곧 할 수 있습니다.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);
}
};
}
업데이트: 스프링 보안 4.2 이후 쿠키 csrf 저장소(링크는 여전히 최고의 소스임)를 사용하는 경우 각도에 대한 올바른 쿠키 이름이 기본적으로 사용됩니다. 즉, 더 이상 사용자 지정 필터가 필요하지 않습니다.예:
@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());
원래 GitHub 저장소에 숨겨진 것이 있었기 때문에 직접 질문에 답합니다.1호.
해결책은 CSRF 매개 변수를 Http 메시지 헤더로 추가하는 Java 코드 두 줄을 추가하는 것이었습니다.
Tag를 사용하여 GitHub repo에 작업 솔루션을 추가했습니다.v.2.0
.
언급URL : https://stackoverflow.com/questions/27457442/how-to-configure-spring-security-to-send-x-csrf-token
'programing' 카테고리의 다른 글
안드로이드의 너비와 높이를 얻는 방법.위젯이미지 보기? (0) | 2023.08.06 |
---|---|
MySQL group_concat에 해당하는 Presto (0) | 2023.08.06 |
공통(빌드) 시스템에서 C/C++ 식별자의 최대 길이는 얼마입니까? (0) | 2023.08.06 |
도커호스트에서 볼륨 마운트 (0) | 2023.08.06 |
스프링 "고정형"이란 무엇입니까? (0) | 2023.08.06 |