Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 객체지향
- 미국주식
- object
- javascript
- 알고리즘
- 금리인상
- FCF
- 현금흐름표
- 접근제어자
- 주린이
- 다형성
- Java
- 배당성장
- 주식
- 무디스
- StringBuffer
- 백준
- 금리인하
- 잉여현금흐름
- 그리디 알고리즘
- 프로그래머스
- S&P500
- etf
- mco
- 인플레이션
- 기업분석
- 오버라이딩
- 제태크
- 자바
- XLF
Archives
- Today
- Total
오늘의하루
Spring Security - 권한 계층 구조 설정 (RoleHierarchy) 본문
RoleHierarchy 사용목적
RoleHierarchy는 Spring Security에서 역할(Role) 간의 계층 구조를 정의하여 권한을 상속받을 수 있게 하는 유용한 기능입니다.
이를 통해 권한 간의 관계를 설정하고, 코드의 가독성을 향상시킬 수 있습니다.
예를 들어, 계층 구조를 설정하면 상위 역할이 하위 역할을 자동으로 포함하므로, 보안 정책을 간단하고 효율적으로 관리할 수 있습니다.
RoleHierarchy 사용방법
다음은 RoleHierarchy를 설정하고 사용하는 기본적인 예시입니다.
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean RoleHierarchy roleHierarchy() {
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl();
roleHierarchyImpl.setHierarchy("ROLE_D > ROLE_C > ROLE_B > ROLE_A");
return roleHierarchyImpl;
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequest(auth -> {
auth.requestMatchers("/user").hasAnyRole("A");
auth.requestMatchers("/manager").hasAnyRole("B");
auth.requestMatchers("/admin").hasRole("C");
auth.requestMatchers("/secert").hasRole("D");
});
}
}
이 코드는 "ROLE_D > ROLE_C > ROLE_B > ROLE_A" 계층 구조를 설정하고, 특정 경로에 대한 권한을 부여하는 예시입니다.
여기서 "ROLE_D"는 가장 높은 권한이며, 이 계층 구조에 따라 "ROLE_C" 이하의 권한을 가진 모든 사용자는 "ROLE_D"에 포함됩니다.
RoleHierarchy 사용시 주의할 점
`RoleHierarchy`는 계층 구조에 따라 권한을 상속하므로, 특정 역할을 가진 사용자가 다른 역할에 접근할 수 있습니다.
예를 들어, /admin 경로에 hasRole("C")를 사용하면 "ROLE_C"는 물론 "ROLE_D"도 접근할 수 있습니다.
이 때문에 특정 경로에 대한 제한을 강화하려면 RoleHierarchy에서 해당 관계를 제거해야 합니다.
계층 구조 변경으로 특정 권한 제한
@Bean
public RoleHierarchy roleHierarchy() {
RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
roleHierarchy.setHierarchy("ROLE_D > ROLE_B > ROLE_A"); // ROLE_C 제거
return roleHierarchy;
}
이러한 변경으로 계층 구조를 조정하여 특정 권한을 가진 사용자가 접근할 수 있는 범위를 제한할 수 있습니다.
'Spring > Security' 카테고리의 다른 글
[Spring-Security 6.3.0-M1] 권한 계층 RoleHierarchy (0) | 2024.05.29 |
---|---|
Spring Security - 세션 생성 정책 (0) | 2024.05.13 |
Spring Security - Session 생성 및 파기 이벤트 (0) | 2024.05.12 |
Comments