[스프링시큐리티] 계층적 권한

Welcome to Seoyun Dev Log·2024년 12월 17일
0

보안

목록 보기
10/18

RoleHirerachy

: 기본적으로 스프링시큐리티에서 권한과 역할은 계층적이거나 상하관계로 구분하지 않는다.
그래서 인증 주체가 다양한 역할과 권한을 부여 받아야 한다

RoleHirerachy는 역할간의 계층구조를 정의하고 관리하는데 사용되며 보다 간편하게 역할간의 계층 구조를 설정하고 이를 기반으로 사용자에 대한 액세스 규칙을 정의 할 수 있다

<property name="hierarchy"> 
<value>
ROLE_A > ROLE_B
ROLE_B > ROLE_C
ROLE_C > ROLE_D
</value> 
</property>

  • setHirerachy
    • 역할 계층을 설정하고 각 역할에 대해 해당 역할의 하위계층에 속하는 모든 역할 집합을 미리 정해 놓는다
    • 역할 계층 : ROLE_A > ROLE_B > ROLE_C

  • getReachableGrantedAuthorities
    • 모든 도달 가능한 권한의 배열을 반환한다
    • 도달가능한권한은직접할당된권한에더해역할계층에서이들로부터도달가능한모든권한을의미한다
    • 직접 할당된 권한 : ROLE_B
    • 도달 가능한 권한 : ROLE_B, ROLE_C

  • 사용 규칙

    • 권한의 범위를 >, =, < 등으로 관계 표현을 해줘야한다
    • 다음 권한으로 넘어갈때 개행을 해줘야한다
@Bean
static RoleHierarchy roleHierarchy() {
  RoleHierarchyImpl hierarchy = new RoleHierarchyImpl(); 

  hierarchy.setHierarchy("ROLE_ADMIN > ROLE_MANAGER\n" +
    "ROLE_MANAGER > ROLE_USER\n" +
    "ROLE_USER > ROLE_GUEST"); 
  return hierarchy;
}

권한의 역할 계층을 설정하면
RoleHierarchy가 알아서 도달 가능한 권한을 부여한다

profile
하루 일지 보단 행동 고찰 과정에 대한 개발 블로그

0개의 댓글

관련 채용 정보