JAVAIARY

Spring Security - 3. 커스텀 로그인 페이지 & CSRF 토큰 본문

lectureNote/SPRING

Spring Security - 3. 커스텀 로그인 페이지 & CSRF 토큰

shiherlis 2022. 12. 16. 15:15

1. 커스텀 로그인 페이지

1) 로그인 페이지 추가

loginForm.jsp 추가
loginForm.jsp의 form 태그

  • 가지고 있던 로그인 폼을 수정해서 사용하였다. 
  • form 태그의 action 속성을 "/login"으로 변경
  • 아이디와 비밀번호를 받는 input 태그의 name 속성을 각각 username 과 password 로 변경

  • error 와 logout 메시지를 출력해 줄 칸 생성
<input type="hidden" name =="${_csrf.parameterName}" value="${_csrf.token}" />
  • csrf.token 값 저장을 위한 input 태그 생성

2) CommonController 작성

	@GetMapping("/loginForm")
	  public void loginInput(String error, String logout, Model model) {
	    log.info("error: " + error);
	    log.info("logout: " + logout);

	    if (error != null) {
	      model.addAttribute("error", "Login Error Check Your Account");
	    }
	    if (logout != null) {
	      model.addAttribute("logout", "Logout!!");
	    }
	  }

3)로그인폼 경로 지정

securty-context.xml

4) 확인

  • 미 로그인 상태로 sample/member 와 sample/admin 접속

2. CSRF 토큰

  • 서버가 브라우저에 데이터를 전송할 때 함께 보내는 토큰
  • 일반적으로 난수를 생성하여 공격자가 패턴을 찾을 수 없도록 함
  • 호출시마다 값이 변경됨
  • 세션을 통해 보관
  • 브라우저에서 전송된 CSRF 토큰값을 검사하는 방식으로 처리

 1) 이용

스프링 시큐리티는 기본적으로 GET방식을 제외하고 모든 요청에 CSRF토큰 사용
<form>등의 데이터 전송시에 CSRF토큰을 같이 전송하도록 처리

# 코드로 배우는 웹 프로젝트 참고

'lectureNote > SPRING' 카테고리의 다른 글

lombok 과 어노테이션  (0) 2022.12.21
Spring Security - 4. 로그인 성공 / 로그아웃  (0) 2022.12.18
Spring Security - 2. 로그인 처리  (0) 2022.12.16
Spring Security - 1. 환경설정  (0) 2022.12.14
OAuth  (0) 2022.11.20