spring security CSRF사용시 정상적으로 토큰값이 넘어오는 지 확인 하기 위한 테스트 클래스 작업

<bean id="csrfSecurityRequestMatcher" class="xxx.xxxx.xxxx.CsrfSecurityRequestMatcher"/>

securty http설정 부분에

<csrf disabled="false" request-matcher-ref="csrfSecurityRequestMatcher"/>

 

소스를 아래와 같이 작성 후 정상적으로 토큰값이 넘어오는지 확인 할 수 있습니다.

public class CsrfSecurityRequestMatcher implements RequestMatcher{
	private static final Logger logger = LoggerFactory.getLogger(CsrfSecurityRequestMatcher.calss);

	private Pattern allowedMethods = Pattern.compile("^(GET|HEAD|TRACE|OPTIONS)&");
	
	private RequestMatcher imgMatcher = new RegexRequestMatcher("/img/*", null, true);
	private RequestMatcher orMatcher = new OrRequestMatcher(imgMatcher);

	@Override
	public boolean matches(HttpServletRequest request){
		//전송 url의 mothod가  post 가 아닌경우 예외처리
		if(allowedMethods.matcher(request.getMethod()).matches()){
			return false;
		}
		logger.debug("=================================");
		logger.debug("URL: "+reuqest.getRequestURI());
		logger.debug("X-CSRF-TOKEN: "+reuqest.getHeader("X-CSRF-TOKEN"));
		logger.debug("=================================");

		return !orMatcher.matches(request);
	}
}
반응형
Posted by 질주하는구
,