-
[TIL] Spring Security 기본 개념 익히기TIL(Today I Learned) 2023. 1. 9. 20:56
*20230109의 회고
오늘은 스프링 시큐리티의 기본적인 개념에 대해 학습하였다. 오늘 알게 된 몇가지 내용을 기록하려 한다.
- Spring Security : 스프링 서버에 필요한 인증 및 인가를 구현하기 쉽게 해주는 프레임 워크
- CSRF(Cross Site Request Forgery) : 사이트 간 요청 위조
- 공격자가 인증된 브라우저에 저장된 쿠키의 세션 정보를 활용하여 웹 서버에 사용자가 의도하지 않은 요청을 전달하는 것 -> 요청 위조!
- 쿠키 기반의 취약점을 이용한 공격
- SecurityFilterChain
- Spring Security는 요청이 들어오면 Servlet FilterChain을 자동으로 구성한 후 거치게 하는데, 이때 여러 Filter를 Chain 형태로 묶어놓은 것이 SecurityFilterChain 이다.
- Spring의 보안 Filter를 결정하는데 사용되는 Filter
- session, jwt 등의 인정방식들을 사용하는데에 필요한 설정을 완전히 분리할 수 있는 환경을 제공한다.
- AbstractAuthenticationProcessingFilter
- 사용자의 credential을 인증하기 위한 베이스 Filter
- UsernamePasswordAuthenticationFilter
- AbstractAuthenticationProcessingFilter를 상속한 Filter
- Form Login 기반을 사용할 때 username 과 password 를 확인하여 인증한다.
- Form Login : 인증이 필요한 URL 요청이 들어왔을 때 인증이 되지 않았다면 로그인 페이지를 반환하는형태
- SecurityContextHolder
- 스프링 시큐리티로 인증을 한 사용자의 상세 정보를 가지고 있는 컨테이너
- SecurityContext : SecurityContextHolder 로 접근할 수 있으며, Authentication 객체를 가지고 있다.
- Authentication
- 인증 객체를 의미함
- 현재 인증된 사용자를 나타내며 SecurityContext 에서 가져올 수 있다.
- principal, credential, authorities 를 사용하여 객체 생성
- principal : 사용자를 식별함. username / password 방식으로 인증할 때 보통 UserDetails 인스턴스다.
- credential : 주로 비밀번호. 대부분 사용자 인증에 사용하고 난 다음 비운다(null).
- authorities : 사용자에게 부여한 권한을 GrantedAuthority 로 추상화 하여 사용한다.
- UserDetailsService : username / password 인증방식을 사용할 때 사용자를 조회하고 검증한 후 UserDetails 를 반환한다. Custome 하여 Bean으로 등록 후 사용 가능하다.
- UserDetails : 검증된 UserDetails는 UsernamePasswordAuthenticationToken 타입의 Authentication을 만들 때 사용되며 해당 인증객체는 SecurityContextHolder에 세팅된다. Custom 하여 사용 가능.
'TIL(Today I Learned)' 카테고리의 다른 글
[TIL] 에라토스테네스의 체(소수 찾기) (0) 2023.01.13 [TIL] Deque 자료구조 (0) 2023.01.11 [TIL] 세번째 프로젝트를 마치며... KPT 회고 (0) 2023.01.06 [TIL] JWT로 인증 인가 구현하기 (0) 2023.01.05 [TIL] @PathVariable의 변수명 차이로 인한 오류 (2) 2023.01.02