카테고리 없음

SecurityConfig 설정하기

Mon Groy 2024. 9. 6. 20:40

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 클래스로 전달하기)

 

 


로그인 실패시 예외 핸들러 클래스 만들때 참고

 

https://velog.io/@dasd412/2.%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%8B%A4%ED%8C%A8-%ED%95%B8%EB%93%A4%EB%A7%81%ED%95%98%EA%B8%B0

 

2.스프링 시큐리티 [로그인 실패 핸들링하기]

로그인 실패를 하게 되면 “loginURL?error”라는 url로 바뀔 뿐, 사용자 입장에서는 무엇이 일어났는지 아무것도 알 수 없다.따라서 로그인을 실패할 경우, 아래 html(mustache)처럼 실패 이유를 출력해

velog.io

https://minwoo-it-factory.tistory.com/entry/%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%8B%A4%ED%8C%A8%EC%8B%9C-Failure-Handler

 

로그인 실패시 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