문제

계층적 사용자 계정 시스템 설정과 관련된 유용한 리소스를 아는 사람이 있습니까?저는 현재 하나를 설정하고 있으며 좀 더 복잡한 논리(특히 권한 결정과 관련된)로 어려움을 겪고 있습니다.나는 나에게 도움이 될만한 자원을 찾을 수 있기를 바랐습니다.

일부 배경:중첩된 그룹 계층 구조를 허용하는 웹 CMS용 사용자 계정 시스템을 구축 중입니다.각 그룹은 읽기, 쓰기, 추가 및 삭제에 대한 액세스를 허용/거부할 수 있습니다(해당 그룹에 대해 명시적으로 또는 상위 그룹 중 하나에 의해 암시적으로).그것이 충분히 복잡하지 않은 것처럼 시스템에서는 사용자가 여러 그룹의 구성원이 될 수도 있습니다.-- 여기서 막혔어요.모든 설정을 완료했지만 특정 사용자에 대한 권한을 결정하는 실제 논리를 이해하는 데 어려움을 겪고 있습니다.

도움이 되었습니까?

해결책

CakePHP 매뉴얼에는 액세스 제어 목록의 작동 방식에 대한 훌륭한 설명이 있습니다.

http://book.cakephp.org/2.0/en/core-libraries/comComponents/access-control-lists.html

다른 팁

특정 그룹에 대해 설정된 권한을 비트 마스크로 나타냅니다.비트 마스크를 함께 OR하면 결과 권한 세트가 제공됩니다.

@Alex 업데이트:

나는 이 답변을 3년 전에 썼지만 다음과 같은 내용을 암시하고 있었던 것 같습니다...

질문에서

중첩된 그룹 계층 구조.각 그룹은 읽기, 쓰기, 추가 및 삭제에 대한 액세스를 허용/거부 할 수 있습니다 (해당 그룹에 대해 명시 적으로 또는 부모 중 한 사람이 암시 적으로).그것이 충분히 복잡하지 않은 것처럼, 시스템을 통해 사용자는 여러 그룹의 구성원이 될 수 있습니다.-- 여기서 막혔어요.나는 모든 것을 설정했지만, 주어진 사용자에 대한 Pemission을 결정하기위한 실제 논리로 어려움을 겪고 있습니다.

시스템에서 그룹(또는 역할)의 전체 권한 집합과 일치하는 비트마스크를 할당합니다.

예를 들어 00 (여기서 두 비트를 사용하면 간단해집니다!)

첫 번째 비트는 다음과 같습니다. Permission A 그리고 두 번째 Permission B.

이제 그룹 A가 다음 권한 집합을 부여한다고 가정해 보겠습니다. 01.

...그룹 B가 다음 권한 집합을 부여한다고 가정해 보겠습니다. 10.

임의의 그룹 집합에 있는 사용자에 대한 결과 권한 집합을 얻으려면 논리적 작업을 수행할 수 있습니다. OR 권한 세트 비트 마스크에서:

Permission set for Group A   01
Permission set for Group B   10 OR 
                             ----
Resultant permission set     11 (i.e. both permission A and B are conferred)

나는 질문자의 시스템에 대해 자세히 알지 못하지만 여기에 설명된 시스템을 확장하여 다양한 논리 연산자를 사용하여 다양한 그룹 구성 동작을 달성할 수 있습니다.

권한을 살펴보세요. 앤드류 파일 시스템.이를 통해 사용자는 자신의 그룹을 만들고 관리하는 동시에 관리자 권한과 ACL을 선택적으로 할당할 수 있습니다.성가신 세부 사항 중 많은 부분이 해당 모델에서 이미 해결되었음을 알 수 있습니다.

편집하다: AFS 문서에 대한 더 나은 링크는 다음과 같습니다.

http://www.cs.cmu.edu/~help/afs/index.html

그룹에 관한 섹션은 다음과 같습니다.

http://www.cs.cmu.edu/~help/afs/afs_groups.html

나는 이전에 이것을 정확하게 수행했으며 이는 사소한 구현이 아닙니다.SecurityPermission 클래스를 살펴보고 싶을 것입니다.

[http://msdn.microsoft.com/en-us/library/system.security.permissions.securitypermission.aspx][1]

이전에 XML을 활용하고(다시 사용할지는 잘 모르겠습니다) 해당 XML을 CLR 저장 프로세스를 통해 XML 열에 있는 SQL 서버 내부의 권한 목록으로 저장하여 이 작업을 수행한 적이 있습니다.XML에는 "권한"이라는 요소가 있으며 권한은 실제로 코드 내부의 ENUM입니다.각 권한은 SecurityPermission 클래스(위에 링크됨)의 새로운 구현이었습니다. 사용자는 SQL Server에 정의된 그룹에 묶여 있었고, 사용자가 그룹에 추가/제거되면 XML 문서는 어떤 그룹에 속해 있는지 반영하도록 업데이트되었습니다. 의.

사용자가 로그인하자마자 사용자 자격 증명이 애플리케이션 스토어(세션)에 로드된 다음 그에 따라 액세스됩니다.인증이 필요할 때 애플리케이션 스토어의 XML은 "FromXML" 메소드를 통해 SecurityPermission으로 풀다운되어 로드됩니다.이 시점에서 나는 다음 방법을 사용하여 사용자에게 권한이 있는지 확인합니다.

  • 수요
  • 교차
  • 노동 조합
  • 제한 없음
  • IsSubSetOf

등등, 등등, 등등.

그 시점에서 Demand를 수행한 후 SecurityPermissions에서 보안 루틴을 구현한 방법에 따라 호출자가 액세스 권한을 가지고 있는지 확인할 수 있었습니다.

다시 말하지만, 이것은 엄청난 양의 세부 사항을 생략하고 있지만 이를 통해 올바른 길로 갈 수 있습니다.

이 이름 공간도 살펴보십시오.[2]: http://msdn.microsoft.com/en-us/library/system.security.permissions.aspx "시스템.보안.권한"

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top