본문 바로가기

Language/Spring Security

계층적 권한 - RoleHireachy

728x90
  • 기본적으로 스프링 시큐리티에서 권한과 역할은 계층적이거나 상하 관계로 구분하지 않음
    ROLE_ADMIN이 ROLE_USER보다 더 큰 개념이라고 인식하지 않음
    → 따라서 인증 주체가 다양한 역할과 권한을 부여 받아야 함
  • RoleHirerachy는 역할 간의 계층 구조를 정의하고 관리하는 데 사용되며 보다 간편하게 역할 간의 계층 구조를 설정하고 이를 기반으로 사용자에 대한 액세스 규칙을 정의 가능
<property name="hierarchy">
	<value>
		ROLE_A > ROLE_B
		ROLE_B > ROLE_C
		ROLE_C > ROLE_D
	</value>
</property>
  • ROLE_A를 가진 모든 사용자는 ROLE_B, ROLE_C 및 ROLE_D도 가짐
  • ROLE_B 를 가진 모든 사용자는 ROLE_C 및 ROLE_D도 가짐
  • ROLE_C 를 가진 모든 사용자는 ROLE_D도 가짐
  • 계층적 역할을 사용하면 액세스 규칙이 크게 줄어들 뿐만 아니라 더 간결하고 우아한 형태로 규칙을 표현 가능

구조

  • setHirerachy
    • 역할 계층을 설정하고 각 역할에 대해 역할의 하위 계층에 속하는 모든 역할 집합을 미리 정함
      • 역할 계층 : ROLE_A > ROLE_B > ROLE_C
  • getReachableGrantedAuthorities
    • 모든 도달 가능한 권한의 배열을 반환
    • 도달 가능한 권한은 직접 할당된 권한에 더해 역할 계층에서 이들로부터 도달 가능한 모든 권한을 의미
      • 직접 할당된 권한 : ROLE_B
      • 도달 가능한 권한 : ROLE_B, ROLE_C
728x90