일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- 인스턴스
- 메서드
- 감사기록
- 성장기록
- 스파르타내일배움캠프TIL
- Java의 이점
- 스파르타내일배움캠프
- 객체지향 언어
- 포맷은 최후의 보루
- diary
- #스파르타내일배움캠프
- 클래스
- TiL_1st_0419
- #스파르타내일배움캠프TIL
- 해우소
- #내일배움캠프
- 변수의 다양성
- JVM
- KPT
- 스레드
- 회고록
- GitHub
- Token
- 생성자
- Git
- static
- 내일배움캠프
- Github_token
- Diary 해우소
- Today
- Total
몬그로이
SecurityConfig 설정하기 본문
Security (Filter) 를 거친후 JWT 발급이 진행된다
그렇기 때문에 마지막에 설정해야 하는 것은 SecurityConfig 클래스
필터 단에서 보안과 관련한 설정들이 담겨있다고 생각하면 된다
원래는 WebSecurityConfigurerAdapter 를 상속을 받아서 Override 하면 되는 것이었지만
spring security 5.7 이상에서 더 이상 WebSecurityConfigurerAdapter 사용을 권장하지 않는다
대신 SecurityFilterChain을 반환하는 메서드를 Bean 으로 등록하여 SecurityConfig에 넣으면 된다
** SecurityFilterChain은 스프링 시큐리티의 핵심 구성 요소 중 하나로,
HTTP 요청이 들어올 때 필터 체인에서 각각의 필터가 순차적으로 요청을 처리하거나 거부하는 역할을 함
SecurityFilterChain에 담길 수 있는 내용으로는
- CSRF 설정
- CORS 설정 // 타 웹의 api 등을 통해 내 웹으로 접근할 수 있도록 할 경우 필요
- JWT를 사용하기 위해 기본으로 제공되는 Session 방식 중단처리**
- Filter 순서 설정
-
그렇기 때문에 담기는 내용으로는
- 로그인한 클라이언트 인증하기
- 인증된 클라이언트에게 JWT 발급해주기
- 인증받은 클라이언트가 보내오는 JWT 받아내기
- 받은 JWT 디코딩하기
가 되겠다
더 세분화하여
- 클라이언트의 권한에 다른 접근 가능 url 설정
- 사이트를 변조하려는 요청을 방지
- 로그인가능한 url 지정 >> 성공시 또는 실패시 리다이렉트 url 지정
- 로그아웃 기능 이용시의 조건과 url 지정
- 로그인한 클라이언트 인증(service 클래스로 전달하기)
로그인 실패시 예외 핸들러 클래스 만들때 참고
도중에 cannot resolve symbol 에러 발생해결
https://www.lesstif.com/java/intellij-cannot-resolve-symbol-125305274.html
spring security 5.7 이상에서더 이상 WebSecurityConfigurerAdapter 사용을 권장하지 않는다
https://this-circle-jeong.tistory.com/162
CustomLoginFailureHandler 클래스를 만드는데
HttpServletRequest
가 import 되지 않는 문제 발생
구글링하여
compileOnly 'jakarta.servlet:javax.servlet-api:4.0.1'
를 gradle 에 추가했지만 해결되지 않음
아래 링크 참고하여
implementation 'org.springframework.boot:spring-boot-starter-web'
가 gradle에 등록되어 있지 않았음을 확인하고 추가하니 해결됨!
참고
https://pika-chu.tistory.com/1426