You will be fine

<Spring Security> 3. 인증&인가 처리 과정

by BFine
반응형

 

출처 : https://inf.run/4Vam

 

스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security - 인프런 | 강의

초급에서 중.고급에 이르기까지 스프링 시큐리티의 기본 개념부터 API 사용법과 내부 아키텍처를 학습하게 되고 이를 바탕으로 실전 프로젝트를 완성해 나감으로써 스프링 시큐리티의 인증과

www.inflearn.com

가. 인증 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 : 모두 허용이여야 승인  

반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기