Spring

Spring Security의 Role(역할)과 Authority(권한)의 차이

Beekei 2025. 2. 21. 15:30
반응형

Role(역할)이란?

Role(역할)은 여러 개의 Authority(권한)을 묶어둔 개념입니다.
즉, ROLE_ADMIN은 "READ_POST", "WRITE_POST", "DELETE_POST" 등의 권한을 가질 수 있습니다.

Role 예시

hasRole("ADMIN")   // 관리자 역할
hasRole("USER")    // 일반 사용자 역할
Spring Security에서는 Role을 내부적으로 "ROLE_" prefix를 붙여 관리
예를 들어 hasRole("ADMIN")은 내부적으로 "ROLE_ADMIN"을 의미

특징

  • 사용자 그룹(역할) 단위로 권한을 부여 가능
  • 하나의 Role이 여러 개의 Authority를 포함할 수 있음
  • Role 기반 접근 제어가 더 단순하고 이해하기 쉬움

Authority(권한)란?

Authority(권한)은 사용자가 수행할 수 있는 개별적인 권한(행동 단위)을 의미합니다.
예를 들어, "게시글 읽기", "게시글 작성", "게시글 삭제" 등의 권한을 설정할 수 있습니다.

Authority 예시

hasAuthority("READ_POST") // 게시글 읽기 권한 
hasAuthority("WRITE_POST") // 게시글 작성 권한 
hasAuthority("DELETE_POST") // 게시글 삭제 권한

특징

  •  세부적인 권한 관리가 가능 (세밀한 접근 제어 가능)
  • 하나의 Role에 여러 개의 Authority를 포함할 수 있음
  • 권한을 통해 특정 기능(행동)에 대한 접근을 제어

Role과 Authority 차이 정리

항목 Role(역할) Authority(권한)
개념 여러 개의 권한을 묶은 역할 특정 기능(행동)에 대한 권한
사용 예시 hasRole("ADMIN") hasAuthority("READ_POST")
접근 방식 사용자 그룹(역할) 단위 관리 세부적인 기능별 관리
유연성 역할별 권한 일괄 관리 가능 세밀한 제어 가능
Spring 내부 처리 "ROLE_ADMIN" (Spring이 "ROLE_" prefix 추가) "READ_POST"

즉, Role은 큰 개념이고, Authority는 개별적인 세부 권한을 부여할 때 사용합니다.
보통 Role을 기본으로 사용하고, 세부적인 권한이 필요할 때 Authority를 추가하는 방식이 가장 좋습니다.

반응형