[Spring Security] 인가

AccessDecisionManager

  • 인증 정보, 요청 정보, 권한 정보를 기반으로 사용자의 리소스 접근 허용 또는 거부를 최종 결정하는 엔터티
  • 다수의 투표자를 가질 수 있으며 액세스 권한, 거부 및 보류에 해당하는 각 값이 반환되고 투표자가 판단하고 결정합니다.

  • 최종 액세스가 거부되면 예외 발생

AccessDecisionManager는 인터페이스이며 이 인터페이스를 구현하는 세 가지 구현이 있습니다.

액세스 결정의 세 가지 유형

  • 긍정 기반
    • 여러 유권자 등급 중 하나라도 입국 허가를 받은 경우 이는 입국 허가로 간주됩니다.

    • 이것을 OR 조건으로 생각하면 편리합니다.

      또한 기본 구현입니다.


  • 합의 기반
    • 다수결(승인 및 거부)로 최종 결정이 결정됩니다.

    • 같은 숫자일 경우 기본적으로 접근이 허용되지만 allowEqualGrantedDeniedDecisions 속성이 false로 설정되어 있으면 접근이 거부된다.


  • 만장일치 기반
    • 투표권이 있는 모든 사람은 액세스에 만장일치로 동의해야 하며, 그렇지 않으면 액세스가 거부됩니다.


AccessDecisionVoter

  • 평결을 조사하다 (위원)
  • 승인 과정에서 유권자가 결정한 데이터
    • 인증 – 인증 정보(사용자)
    • FilterInvocation – 요청 정보(antMatcher(“/user”))
    • ConfigAttributes – 인증 정보(hasRole(“USER”))
  • 결정 방법
    • ACCESS_GRANTED: 액세스 권한 부여됨(1)
    • ACCESS_DENIED: 액세스 거부됨(-1)
    • ACCESS_ABSTAIN: 접근 차단(0)
      • 유권자는 이러한 유형의 발의에 대해 결정을 내릴 수 없습니다.


  • FilterSecurityInterceptor는 인증 처리를 AccessDecisionManager에 위임합니다.

  • AccessDecisionManager는 정보 결정(인증, 객체, 구성 속성)을 보유한 투표자에게 전달합니다.

  • 유권자는 정보로 권위의 판단을 판단합니다.

  • 승인, 거부 또는 잠금 결정 방법이 반환되면 AccessDecisionManager는 반환된 결정 방법에 대해 사후 처리를 수행합니다.

    • Acknowledgement: FilterSecurityInterceptor에 인증을 반환할지 여부
    • 거부됨: ExceptionTranslationFilter에 대한 AccessDeniedException 발생

참조

https://www.inflearn.com/course/%EC%BD%94%EC%96%B4-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C %ED%81%90%EB%A6%AC%ED%8B%B0

Spring Security – Spring Boot 기반 Spring Security 개발 – Infrastructure | 강의

초급부터 중/중급까지 Spring Security의 기본 개념, API 사용법, 내부 아키텍처를 학습하고 이를 바탕으로 실제 프로젝트를 수행하여 Spring Security 인증 및 인증에 대해 학습합니다.

www.inflearn.com