2011-01-13 5 views
0

, 나는 Category 역할의 유형입니다 Category.Role 형식의 역할과 "직원"을 가지고있다. 예 : Foo.BarFoo.Foobar - 둘 다 Foo 역할입니다. Foo는 실제로 프로젝트에서 네임 스페이스가 아니지만 그런 식으로 생각하고 있습니다. Active Directory/LDAP는 네임 스페이스와 동일합니까? 코드에서

인가가 나는 할당 및/또는 LDAP 쿼리의 읽을 수있는 Active Directory의 일부 용기 또는 계층 적 역할/당량 등이 내가 할 수 와 모두 어떤 Foo 역할, 또는 특정 모두 쿼리 Foo.X 역할?

+0

azman 역할에 대해 이야기하고 있습니까? 또는 AD 그룹을 역할로 사용하는 것에 대해 이야기하고 있습니까? –

+0

@Harvey 광고 그룹. – Jay

+0

AD 그룹 Parent를 만든 다음 AD 그룹 Child1과 Child2를 Parent 그룹에 추가 할 수 있습니다. 그런 다음 Child1에 추가 된 사용자는 자동으로 Parent 및 Child1 역할을 갖습니다. IsInRole()을 사용하는 경우 자동으로 작동해야합니다. –

답변

1

는 Active Directory에, 다른 그룹의 구성원으로 그룹을 할당 할 수 있습니다. 그래서, 내가 올바르게 이해한다면, 당신이 원하는 것은 "Foo"라는 AD 그룹을 만들고 "Foo.Bar"와 "Foo.Foobar"라는 두 개의 하위 그룹을 만드는 것입니다. 이 두 하위 그룹을 "Foo"그룹의 구성원으로 지정하십시오.

그런 다음, "Foo.Bar"그룹에 만 담당 사용자에 대한. 그는 "Foo"와 "Foo.Bar"의 역할을 모두 담당하게됩니다. 즉, 해당 사용자의 WindowsPrincipal을 얻은 경우 WindowsPrincipal.IsInRole ("Foo") 및 WindowsPrincipal.IsInRole ("Foo.Bar")이 모두 true를 반환합니다. 당신이 회원하지만 순수 LDAP 쿼리를 확인에서 IsInRole() 함수를 사용하지 않는 경우

, 나는 우리가 중첩 된 그룹 관계를 해결하는 쉬운 방법을 찾을 수 없습니다 두렵다. 하나의 LDAP 쿼리 호출을 만드는 방법을 실제로보고 싶다면 AD 사용자 개체에서 "tokenGroups"특성을 찾으십시오. AD로 계산 된 계산 된 특성입니다. 여기에는 모든 중첩 된 그룹 정보가 들어 있습니다. 유일한 것은 그것이 SID를 저장하고 있다는 것입니다. 따라서 AD 그룹의 SID를 찾아 LDAP 바이너리 형식으로 변환하고 쿼리를 수행해야합니다.

관련 문제