<Spring Security> 3. 인증&인가 처리 과정
by BFine
출처 : https://inf.run/4Vam
가. 인증 flow
a. AuthenticationFilter
- 사용자의 로그인 요청에 대해 Authentication(Token)을 생성
b. AuthenticationManger
- 인증의 전반적인 관리를 진행(실제 인증 처리는 하지 않고 AuthenticationProvider로 위임)
=> AuthenticationProvider 목록을 가지고 있음 (ex. Form, RememberMe. Oauth 등)
c. AuthenticationProvider
- 실제 인증 처리 (ID,PW 검증)을 담당함(실패시 예외 발생)
=> 비밀번호 틀린경우 BadCredentailException
- 인증에 성공하면 UserDtails 와 authorities 를 답은 Authentication(Token) 객체를 생성
d. UserDetailsService
- Uesrname을 받아서 유저를 조회하고 UserDetails 객체를 생성한다.
=> 존재하지 않는 경우 UserNotFoundException 발생
나. 인가 flow
a. FilterSecurityInterceptor
- 마지막에 위치한 필터, 인증된 사용자의 요청에 대한 권한처리를 관리
- 실제 처리는 AccessDecisionManager로 위임
- 예외처리
1. 인증객체없이 자원에 접근 : AuthenticationException
2. 권한이 없는 경우 : AccessDeniedException
b. AccessDecisionManager & AccessDecisionVoter
- 권한여부를 확인하고 승인할지 거부할지에 대한 부분을 처리한다.
- AccessDecisionManager는 여러 개의 Voter를 가지며 각각 Voter부터 값을 리턴 받는다.
=> Voter는 판단을 심사한다.
- Voter 리턴값 종류
1. ACCESS_GRANTED : 접근허용
2. ACCESS_ABSTAIN : 접근보류
3. ACCESS_DENIED : 접근거부
- AccessDecisionManager는 Voter 값을 취합하여 유형에 따라 처리를 결정한다.
- 접근결정 유형
1. AffrimativeBased : 하나라도 허용이면 승인
2. ConsensusBased : 다수 값으로 결정 (같을 경우에는 어떻게 처리할지 설정 가능 : default 승인)
3. UnanimousBased : 모두 허용이여야 승인
'공부 > Spring Security' 카테고리의 다른 글
<Spring Security> 5. FilterChainProxy에 들어가는 Filter들 분석하기 (0) | 2021.10.21 |
---|---|
<Spring Security> 4. Custom 필터 추가해보기 (0) | 2021.10.11 |
<Spring Security> 2. 아키텍쳐 (0) | 2021.09.04 |
<Spring Security> 1. 기본 설정 (0) | 2021.09.01 |
<Spring Security> 0. 스프링 시큐리티란 (0) | 2021.07.14 |
블로그의 정보
57개월 BackEnd
BFine