Spring Security docs로 공부하기 (#04)

0

Spring Security

목록 보기
4/5
post-custom-banner

Authorities

Authentication, 모든 구현이 개체 Authentication목록을 저장하는 방법을 설명한다. GrantedAuthority는 본인에게 부여된 권한을 나타낸다.

개체는 GrantedAuthority 개체에 삽입되고 나중에 권한 부여 결정을 내릴때 둘 중 하나에 의해 읽힌다.

아래는 GrantedAuthority 하나의 메서드만 있는 인터페이스다.

String getAuthority();

이 방법을 사용하면 Authorizationmanager의 정확한String 표현을 얻을 수 있다.


Pre-Invocation Handling

Spring Security메소드 호출 또는 웹 요청과 같은 보안 객체에 대한 액세스를 제어하는 인터셉터를 제공한다.

The AuthorizationManager

AuthorizationManager AccessDecisionManagerAccessDecisionVoter을 모두 대체한다.

AccessDecisionManager를 사용 하도록 변경 하거나 사용자 지정하는 응용 프로그램이다.

AuthorizationManagersAuthorizationFilter에 의해 호출되며 최종 액세스 제어 결정을 내릴 책임이 있다.

AuthorizationManager 인터페이스에는 두 가지 메서드가 있다.

AuthorizationDecision check(Supplier<Authentication> authentication, Object secureObject);

default AuthorizationDecision verify(Supplier<Authentication> authentication, Object secureObject)
        throws AccessDeniedException {
}

위임 기반 AuthorizationManager 구현

사용자가 권한 부여의 모든 측면을 제어하기 위해 자신의 것을 구현할 수 있지만, Spring SecurityAuthorizationmanager를 위임한다.


계층적 역할

계층적 역할이라는 것은 특정 역할다른 역할포함하는 것이다.

예를 들어서 USER, MANAGER, ADMIN 3개의 권한이 있다.
(권한은 오름차순으로 높다.)

따라서 MANAGERUSER의 권한을 가지고 있어야 하고, ADMINUSER, MANAGER 2개의 권한을 모두 다 가지고 있어야 한다.

이러한 계층적 역할을 지원하는 RoleVoterRoleHierarchyVoter로 구성되어 RoleHierarchy 사용자에게 할당된 모든 접근 가능한 권한을 얻는다.

@Bean
AccessDecisionVoter hierarchyVoter() {
    RoleHierarchy hierarchy = new RoleHierarchyImpl();
    hierarchy.setHierarchy("ROLE_ADMIN > ROLE_STAFF\n" +
            "ROLE_STAFF > ROLE_USER\n" +
            "ROLE_USER > ROLE_GUEST");
    return new RoleHierarchyVoter(hierarchy);
}
post-custom-banner

0개의 댓글