[Spring Boot] 스프링 시큐리티(Spring Security) 정리
- SpringBoot
![[Spring Boot]](/static/79cfb4fb38f9439b5e9280949f832f29/245fe/heroImage.png)
스프링 시큐리티 동작 방식
- 인증이 필요한 화면 접근 시 로그인 화면을 보여주고 username과 password를 입력 받음
- 이때, HTTPServletRequest에 username, password가 전달됨.
- AuthenticationFilter가 넘어온 username과 password의 validation check를 진행함.
-
유효성 검사 후 실제 구현체인 UsernamePasswordAuthenticationToken을 생성
-
2번에서 만든 Token을 AuthenticationManager에게 전달
-
AuthenticationManager가 해당 Token을 AuthenticationProvider에게 전달
-
사용자 아이디를 UserDetailsService로 보냄
- UserDetailService는 사용자 아이디로 찾은 사용자의 정보를 UserDetails 객체로 만들어 AuthenticationProvider에게 전달
-
DB에 있는 사용자의 정보를 가져옴
-
입력 정보와 UserDetails의 정보를 비교해 실제 인증 처리를 진행
-
8~10까지 인증이 완료되면, SecurityContextHolder에 Authentication을 저장함.
- 인증 성공 여부에 따라,
- 성공시
- AuthenticationSuccessHandler
- 실패시
- AuthenticationFailureHandler
- 성공시
- 인증 성공 여부에 따라,
인가(Authorization) 주요 방식
- URL 기반 접근 제어
http.authorizeHttpRequests().requestMatchers("/admin/**").hasAuthority("ROLE_ADMIN")
- 메서드 기반 접근 제어
@PreAuthorize("hasAuthority('ROLE_ADMIN')")
인가 동작 방식
- 사용자가 특정 URL에 접근 시도
- 스프링 시큐리티의 필터체인이 요청을 가로챔
- 인증한 정보(UserDetails)에 포함된 권한(Authority) 확인
- 접근 허용 또는 AccessDeniedException(403) 발생
KEEP READING
Related writing

Woojin
구조적으로 사고하고, 근거 있게 구현하기 위해 기록합니다.
