본문 바로가기

개발/스프링 프레임워크

[Spring Secutiry] Invalid CSRF token found for...

Spring Security 를 사용하여 개발중 Invalid CSRF token found for... 와 같은 에러가 발생하면서 로그인이 진행되지 않았다.

CSRF는 Cross-site request forgery (크로스-사이트 요청 위조) 이다.

 

위 문제를 해결하기 위해서는  CSRF Token 추가해야한다.  서버에서는 해당 토큰을 받아 세션에 추가한후 이후에 요청 파라미터의 토큰값과 세션의 토큰값을 비교하여 일치하는지 검증해야한다. 

 

1. maven dependency 추가

       <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
            <version>${secutiry.version}</version>
        </dependency>

2. taglib 추가

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

 

3. form 태그 안에 csrf 추가

<form action="/login method="post">
	<sec:csrfInput>
	<input type="text" id="userId" name="userId">
    <input type="password" id="userPwd" name="userPwd">
    <button type="submit">로그인</button>
</form>

 

4. 확인

 

request