[Spring Security] Role Hierarchy 설정하기

이멀젼씨

·

2021. 6. 24. 18:00

목적

권한 계층구조를 만들어 효율적인 권한관리를 하기 위함

목차

  1. 기존 권한 계층구조의 문제점
  2. 설정 방법

1. 기존 권한 계층구조의 문제점

기본적으로 스프링 시큐리티에서 요구하는 방식은 위와같이 여러 권한이 Collection인터페이스에 담겨있는 형태이다.

권한이 ADMIN, MANAGER, USER 총 세 개가 존재한다고 가정해보자.

관리자의 경우엔 ADMIN, MANAGER, USER권한 세 개를 다 가져야 하고, 매니저의 경우엔 MANAGER, USER권한 두 개를 가져야 한다.

관리자가 ADMIN권한 한 개만 갖고 있다면, 어떠한 URL접근에 필요한 권한이 USER일때 관리자는 USER권한이 없기 때문에 접근할 수 없는 문제가 발생한다.

또한 서버에서도 권한설정을 할때 관리자까지 접근하도록 설정하려면 접근 가능 권한에 ADMIN, MANAGER, USER 이렇게 세가지 권한을 모두 넣어야 한다.

2. 권한 계층구조 설정 방법

RoleHierarchyImpl객체를 하나 만들어서 권한이 높은 순서대로 setHierarchy메소드 안에 정의해준다.

RoleHierarchyImpl객체를 RoleHierarchyVoter의 생성자로 넣어준 뒤 Bean객체로 반환하면 간단하게 권한 계층구조가 만들어진다.