일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- 시큐리티
- StyleSheet
- JAVA11
- 코딩테스트
- 리눅스
- html
- 로그인
- 시큐리티로그인
- gradle
- Spring boot
- 2차원배열
- 싱글톤
- 스프링 부트
- java
- input태그
- css
- codingtest
- programmers
- 시큐리티 로그인
- springboot
- javascript
- 반복문
- 시큐리티 로그아웃
- sql
- springSecurity
- Linux
- 목록
- 소스트리
- security
Archives
- Today
- Total
JAVAIARY
Spring Security - 3. 커스텀 로그인 페이지 & CSRF 토큰 본문
1. 커스텀 로그인 페이지
1) 로그인 페이지 추가
- 가지고 있던 로그인 폼을 수정해서 사용하였다.
- 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)로그인폼 경로 지정
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 |