역할 기반 접근 제어 (RBAC)
애플리케이션에서는 사용자마다 다른 권한을 가지는 경우가 많습니다. 예를 들어, 관리자는 시스템을 관리할 수 있지만, 일반 사용자는 자신의 데이터만 접근하도록 제한해야 합니다. 이런 차이를 구현하려면 역할 기반 접근 제어(Role-Based Access Control, RBAC)가 필요합니다.
- 역할(Role) : 사용자의 직무나 그룹을 나타냅니다. ex. ADMIN, USER
- 권한(Authority): Spring Security가 사용하는 실제 권한 이름으로, 보통 ROLE_ 접두사를 사용합니다. ex. ROLE_ADMIN, ROLE_USER
Spring Security 역할 기반 접근 제어
package com.example.security.roles;
import lombok.Getter;
@Getter
public enum UserRole {
MANAGER("ROLE_MANAGER"),
EMPLOYEE("ROLE_EMPLOYEE");
private final String authority;
UserRole(String authority) {
this.authority = authority;
}
}
1. UserRole 열거형 (enum)
- 사용자 역할(권한)을 정의합니다.
- MANAGER과 EMPLOYEE는 각각 열거형의 상수로, 시스템에서 사용되는 역할을 의미합니다.
2. ROLE_ 접두사
- Spring Security는 권한을 확인할 때 ROLE_ 접두사를 기본적으로 요구합니다.
- ROLE_MANAGER이나 ROLE_EMPLOYEE와 같이 Spring Security에서 인식할 수 있는 실제 권한 이름을 저장합니다.
- Spring Security는 내부적으로 이 값을 사용하여 인증된 사용자가 특정 작업을 수행할 수 있는지 확인합니다.
- ROLE_MANAGER : 관리자의 권한 이름
- ROLE_EMPLOYEE : 직원의 권한 이름
3. authority 필드와 Getter 메서드
- authority 필드는 역할에 대응하는 권한 이름을 저장합니다.
- @Getter를 사용하여 Lombok이 getter 메서드를 자동 생성합니다. ex. userRole.getAuthority()로 값을 가져옵니다.
4. 생성자
- UserRole의 생성자를 사용해 열거형 값과 권한 이름을 연결합니다.
출처
OpenAI의 ChatGPT (https://openai.com)
반응형
'Java Framework > Spring Security' 카테고리의 다른 글
@AuthenticationPrincipal (0) | 2025.04.11 |
---|---|
[Spring Security] 보안 (0) | 2025.02.15 |
[Spring Security] 스프링 세큐리티 (Spring Security) (1) | 2025.02.11 |