728x90
- AuthorizationManager는 인증된 사용자가 요청 자원에 접근할 수 있는지 여부를 결정하는 인터페이스로서 인증된 사용자의 권한 정보와 요청 자원의 보안 요구 사항을 기반으로 권한 부여 결정을 내림
- AuthorizationManager는 Spring Security의 요청 기반, 메소드 기반의 인가 구성 요소에서 호출되며 최종 액세스 제어 결정을 수행
- AuthorizationManager는 Spring Security의 필수 구성 요소로서 권한 부여 처리는 AuthorizationFilter를 통해 이루어지며 AuthorizationFilter는 AuthorizationManager를 호출하여 권한 부여 결정을 내림
구조
- check()
- 권한 부여 결정을 내릴 때 필요한 모든 관련 정보(인증객체, 체크 대상[권한정보, 요청정보, 호출정보 등..])가 전달
- 액세스가 허용되면 true를 포함하는 AuthorizationDecision, 거부되면 false를 포함하는 AuthorizationDecision, 결정을 내릴 수 없는 경우 null 을 반환
- verify() → 사용 해도 되고 하지 않아도 됨
- check를 호출해서 반환된 값이 false 가진 AuthorizationDecision인 경우 AccessDeniedException을 throw
AuthorizationManager 클래스 계층 구조
- RequestMatcherDelegatingAuthorizationManager는 아래 3개의 Manager들을 참조
- 실질적인 권한 심사를 하는 클래스가 아니라 클라이언트가 요청을 하게 되면 요청에 대해 가장 적합한 구현체(Manager)에게 위임(실행)하는 역할
- 메서드 기반 권한 부여 관리자는 AOP로 되어 있음
- AOP를 수행하기 위해 Interceptor, Pointcut, Advice와 같은 클래스들이 사용되어 Manager들과 연계하여 메서드 기반의 로직들을 수행
AuthorizationManager 구현체 종류 및 특징
요청 기반 권한 부여 관리자
- RequestMatcherDelegatingAuthorizationManager
- 인가 설정에서 지정한 모든 요청패턴과 권한 규칙을 매핑한 정보를 가지고 있으며 권한 검사 시 가장 적합한 AuthorizationManager 구현체를 선택해 위임
- AuthenticatedAuthorizationManager
- 인증된 사용자에게 접근을 허용 ⇒ 인증되지 않으면 접근 거부
- 이 클래스는 사용자가 시스템에 로그인했는지 여부를 기준으로 결정
- AuthorityAuthorizationManager
- 특정 권한을 가진 사용자에게만 접근을 허용 (가장 많이 사용)
- 주로 사용자의 권한(예: ROLE_USER, ROLE_ADMIN)을 기반으로 접근을 제어
- WebExpressionAuthorizationManager
- 웹 보안 표현식을 사용하여 권한을 관리
- 예를 들어, "hasRole('ADMIN')" 또는 "hasAuthority('WRITE_PERMISSIONS')"과 같은 표현식을 사용 가능
메서드 기반 권한 부여 관리자
- PreAuthorizeAuthorizationManager
- 메소드 실행 전에 권한을 검사
- @PreAuthorize 어노테이션과 함께 사용되며, 메소드 실행 전 사용자의 권한을 확인
- PostAuthorizeAuthorizationManager
- 메소드 실행 후에 권한을 검사
- @PostAuthorize 어노테이션과 함께 사용되며, 메소드 실행 후 결과에 따라 접근을 허용하거나 거부
- Jsr250AuthorizationManager
- JSR-250 어노테이션(@RolesAllowed, @DenyAll, @PermitAll)을 사용하여 권한을 관리
- SecuredAuthorizationManager
- @Secured 어노테이션을 사용하여 메소드 수준의 보안을 제공
- 특정 권한을 가진 사용자만 메소드에 접근할 수 있도록 함
728x90
'Language > Spring Security' 카테고리의 다른 글
요청 기반 Custom AuthorizationManager 구현 (0) | 2024.08.01 |
---|---|
요청 기반 인가 관리자 - AuthorityAuthorizationManager 외 클래스 구조 이해 (0) | 2024.08.01 |
인가 - Authorization (0) | 2024.08.01 |
계층적 권한 - RoleHireachy (0) | 2024.07.31 |
정적 자원 관리 (0) | 2024.07.31 |