2011-08-04 1 views
2

새로운 스프링 시큐리티 3.1을 사용 중이며 스프링 시큐리티 ACL에 몇 가지 질문이 있습니다.스프링 ACL 질문

  1. 그래서 개체가 있고 그것에 대한 ACL을 정의한다고 가정 해 보겠습니다. 나는 ACL 엔트리를 만들고 그것을 사용자 그룹에 배치하려고한다. 역할 (GrantedAuthoritySid)이 아니라 한 명의 사용자 (PrincipalSid)가 아니라 사용자 그룹입니다. 나는 어디에서나 예제를 연구했지만 어떤 것도 찾을 수 없었다. 이 시나리오에서 나를 도울 수있는 예제 나 클래스를 가르쳐 주시겠습니까?

  2. 그래서 이제 첫 번째 개체와 관련된 두 번째 개체를 만들려고합니다 (동일한 사용자에게 적용해야 함). 예를 들어 첫 번째 개체의 상태 업데이트 일 수 있습니다. 내 GrantedAuthority 또는 Principal에는 두 번째 개체에 대한 다른 마스크가 있습니다. 또한 첫 번째 개체는 2 GrantedAuthorities (2 ACLEntries)이며 상태 업데이트는 하나뿐입니다. ACL 상속을 사용하면 첫 번째 객체에 대한 퍼미션 세트가 두 번째 퍼미션 세트와 일치하지 않습니다. 내 질문은 어떻게 서로 다른 퍼미션 마스크를 유지하면서 두 개의 개체에 대한 GrantedAuthorities이 일관되게 유지되도록 모델링 할 수 있습니다. 하나의 아이디어는 합성 패턴을 사용하여 첫 번째 객체의 GrantedAuthority에있는 두 번째 객체의 GrantedAuthority을 연결하는 것입니다 (사용자와 연결하는 대신).

  3. ACL에 소유자가 있습니다. 소유자는 무엇입니까? ACL 또는 ACL 항목에 대해 어떤 역할을합니까?

답변

1

다소 복잡합니다. 원칙을 이해하기 위해 스프링 소스 코드를 리버스 엔지니어링했으며 많은 시간이 걸렸다. 내가 어떻게 구현했는지 정확하게 말할 수는 없지만 (작업하고있는 프로젝트에 매우 구체적이기 때문에), 출발점을 알려주기 위해 노력할 것입니다. 내가 무슨 짓을

했다 :

  • 사용자 정의 org.springframework.security.acls.sid.Sid를 구현합니다. 이 Sidauthority 또는 user이 아니지만 id가 있고 두 개의 다른 객체를 참조하는 groupobject의 종류를 참조하지 않습니다. 이 groupobject를 Sid으로 사용하려면 객체의 idACL_sid.sidACL_Sid -record를 만들어야합니다. ACL_sid.principal은 0 또는 1 이외의 정수 여야하며 사용자 정의 LookupStrategy의 테스트에서 확인해야합니다 (아래 및 스프링 소스 코드 참조).
  • org.springframework.security.acls.sid.SidRetrievalStrategyImpl을 확장하여 사용자 정의 Sid을 데이터베이스에서 검색하십시오.
  • 사용자 정의 org.springframework.security.acls.jdbc.LookupStrategy을 구현하십시오. 기존 구현을 복사 (클래스가 최종적 이었기 때문에)하고 필요에 맞게 수정했습니다. 봄 구성에서 함께
  • 유선 모든 기본 봄 ACL의 설정이 사용했던 어떤 어떤 클래스 (그리고 기본값)에 필요하기 때문에

스프링 소스 코드를보고 어떻게하는지 참조하십시오.

0

개체 그룹에 개체를 할당하려면 동일한 개체에 대한 각 사용자의 ACL 항목이 있어야합니다. 이로 인해 상당히 많은 ACL 레코드가 생길 수 있습니다.

+0

그래서 우리는 – fvisticot