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 클래스로 전달하기)
로그인 실패시 예외 핸들러 클래스 만들때 참고
2.스프링 시큐리티 [로그인 실패 핸들링하기]
로그인 실패를 하게 되면 “loginURL?error”라는 url로 바뀔 뿐, 사용자 입장에서는 무엇이 일어났는지 아무것도 알 수 없다.따라서 로그인을 실패할 경우, 아래 html(mustache)처럼 실패 이유를 출력해
velog.io
로그인 실패시 Failure Handler
securityConfig.java private final AuthenticationFailureHandler customAuthFailureHandler; @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable(); http.authorizeRequests() .antMatchers("/","/user/**","/image/**","/subs
minwoo-it-factory.tistory.com
도중에 cannot resolve symbol 에러 발생해결
https://www.lesstif.com/java/intellij-cannot-resolve-symbol-125305274.html
인텔리제이(IntelliJ) cannot resolve symbol 에러 처리
www.lesstif.com
spring security 5.7 이상에서더 이상 WebSecurityConfigurerAdapter 사용을 권장하지 않는다
https://this-circle-jeong.tistory.com/162
[Spring Boot] WebSecurityConfigurerAdapter 지원 중단
이전 글 참고 [Spring Boot] Spring Security 회원 등록 (인증, 인가) + BCryptPasswordEncoder [Spring Boot] Spring Security 회원 등록 (인증, 인가) + BCryptPasswordEncoder 이전 글에 이어서 [Spring Boot] Spring Security 처리 과정
this-circle-jeong.tistory.com
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
javax
javax.servlet.http.Cokkie, javax.servlet.http.HttpServletRequest를 import해야해서 javax에 대해 찾아봤다. javax Java API의 일부 Java SE(Java Standard Edition)와 Java EE(Java Enterprise Edition)에서 사용되는 패키지들을 담고 있
pika-chu.tistory.com