2013-12-09 2 views
0

모든 사용자 (등록 및 익명)에게 개체에 대한 읽기 권한을 부여하는 가장 좋은 방법은 무엇입니까? 나는 사용자가 누구나 볼 수 있지만 작성자 또는 관리 사용자 만 편집 할 수있는 항목을 만들 수있는 시스템에서 작업하고 있습니다.봄 보안 ACL 사용 - 개체에 대한 읽기 권한을 모든 사용자 (등록 및 익명)에게 할당하는 방법은 무엇입니까?

Spring은 인증되지 않은 사용자 역할 ROLE_ANONYMOUS를 제공합니다. ROLE_USER로 변경하고 모든 인증 된 사용자에게 제공 할 수 있습니다. 즉, 모든 사람이 ROLE_USER입니다. 그렇다면 모든 공개적으로 볼 수있는 엔티티는 ROLE_USER에 대한 READ 권한이 삽입되고 거기에서 그룹 (GrantedAuthoritySid)을 사용하여 액세스 권한이 있는지 여부를 결정할 수 있습니다 (모든 사용자가 액세스 할 수 있음).

각 공개 객체에 대해 ROLE_USER에 대한 읽기 권한을 부여하지 않고도이를 달성 할 수있는 더 좋은 방법이 있는지 궁금합니다.

답변

1

해당 개체를 누구나 볼 수있는 경우 ACL을 적용 할 필요가 없습니다. 해당 오브젝트를 수정하는 조작에만 ACL을 적용하십시오.

공개/비공개를 개체별로 구성 할 수있는 경우 전용 깃발을 사용하고이 깃발로 가시성을 높일 수 있습니다 (예 : expression-based access control).

그러나 이러한 객체에 대해서도 ACL을 고수하고 싶다면 ROLE_READER와 같은 전용 역할을 만들고 인증 될 때 익명 및 인증 된 사용자에게 동적으로 역할을 할당 할 수 있습니다.

모든 사용자에게 할당 할 기본 권한 (귀하의 경우 ROLE_READER)으로 구성 할 수있는 클래스 org.springframework.security.core.authority.mapping.SimpleAuthorityMapper을 참조하십시오. 그런 다음 인증 프로세스 중에 매퍼를 사용하십시오. 사용자가 인증되는 방식을 지정하지 않았으므로 username/password 스키마와 기본값 인 org.springframework.security.authentication.dao.DaoAuthenticationProvider이 있다고 가정합니다. 당신이 그 수업을 자세히 보면, 당신은 권위 매퍼를 사용할 수 있음을 알게됩니다.

익명 사용자의 경우 기본 권한을 생성자 매개 변수 org.springframework.security.web.authentication.AnonymousAuthenticationFilter으로 설정할 수 있습니다.

+0

대단한 답변, 매우 자세하고 정확히 필요한 것. – SergeyB