일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스파르타코딩클럽
- JavaScript
- 데이터베이스
- EC2
- 남궁성과 끝까지 간다
- 항해99
- CentOS
- Spring Security
- 패스트캠퍼스
- 생성자 주입
- docker
- 스웨거
- @jsonproperty
- 스프링의 정석
- visualvm
- JWT
- Spring
- Kafka
- 쇼트유알엘
- emqx
- java
- 카프카
- 프로그래머스
- DB
- AWS
- 개인프로젝트
- MYSQL
- 웹개발
- 시큐리티
- WEB SOCKET
- Today
- Total
Nellie's Blog
[TIL-230126목] 스프링 시큐리티 공부.. 본문
배운점
1. WebSecurityConfigurerAdaptor클래스가 Deprecated된 문제를 해결해보기
시큐리티를 기본설정하는 SecurityConfig클래스는 WebSecurityConfigurerAdaptor라는 세부보안기능설정클래스를 상속받아서, configure 메소드를 오버라이딩해서 사용하는 방법으로 구현해 왔다. 그러나 이제는 사용할 수 없다.
SecurityFilterChain를 Bean으로 등록해서 사용해야 한다.
간단히 사용법 구/신버전을 비교해보자.
1. WebSecurityConfigurerAdaptor를 상속하여 cofigure메소드를 오버라이딩하는 방법
2. 직접 SecurityFilterChain , WebSecurityCostomizer를 bean으로 등록하는 방법
2. WebSecurity VS HttpSecurity 차이점
Spring Security는 기본적으로 모든 자원에 접근하는 요청에 대해서 인증 + 인가를 확인해서 자원에 접근할 수 있는 경우에만 값을 내려준다. 이렇게 인증 / 인가를 모두 검사하는 것이 좋을 것처럼 보이지만 필요하지 않는 경우가 있다. 예를 들어 정적인 자원들에 대한 값이다.
예를 들어 특정 URL에 접근했을 때, View가 렌더링 된다고 가정해보자. 이미 URL에 접근할 수 있다는 인가를 받으면 그 화면이 바로 랜더링이 되면 된다. 그렇지만 스프링 시큐리티는 기본적으로 모든 접근에 대해서 인증/인가를 검색하기 때문에 이 URL을 랜더링 하는데 필요한 정적인 파일(CSS / HTML / JS) 파일들을 모두 다시 한번 검사한다.
사실 이렇게 동작하게 되면 쓸데없는 일의 반복이 될 수 있기 때문에 정적인 파일에 한해서는 검사를 Skip할 수 있도록 하는 기원을 지원한다. Spring Security에서 지원하는 이 기능을 Web Ignore라고 한다.
Web Ignore와 PermitAll은 같아보이지만 다르다. Web Ignore와 permitAll() 모두 인증없이 접근이 가능하도록 한다는 점에서는 같은 점이 있다. 그렇지만 이 동작 과정을 들여다보면 근본적인 차이가 있다.
PermitAll은 인증이 필요없다고 하지만, 반드시 FilterSecurityInterceptor까지 온 다음에 DispatcherServlet으로 넘어간다. 이 말은, 비록 인증이 필요없다고 하지만 반드시 Spring Security가 제공하는 보안 필터를 거친다는 의미이다. 반대로 WebIgnore는 SpringSecurity가 제공하는 Filter를 거치지 않는다는 점이다.
https://yeees.tistory.com/119#recentComments
느낀점
시큐리티에 대해 이해도가 많이 생긴 것 같다. 그래도 아직 모르는 부분이 많은 것 같다. 프로젝트도 얼른 진행해야 하는데..ㅠㅠ . 정보처리기사도 공부해야해서 더 빡세게 공부해야겠다.
'회고록' 카테고리의 다른 글
[TIL-230130월] 정보처리기사 필기 준비 시작,, 필기 1-2단원 공부 (0) | 2023.01.31 |
---|---|
[TIL-230127금] 스프링 시큐리티 공부 (0) | 2023.01.28 |
[TIL-230125수] 인텔리제이에서 MySQL연동, 시큐리티 접근 문제 트러블슈팅 (0) | 2023.01.26 |
[TIL-230124화] 개인프로젝트 어드민 페이지 회원가입/ 로그인 (jwt사용) (0) | 2023.01.24 |
[TIL-230123월] (0) | 2023.01.24 |