[英]Checking group membership
我正在使用UserPrincipal.FindByIdentity(ctx, "SomeAdminAccountName").GetGroups()
對活動目錄中的組授權用戶。 它適用於簡單的組,但不適用於嵌套的組。 假設我有以下結構:
Administrators members:
SomeAdminAccountName
Users members
Administrators
SomeUserAccountName
用戶組包含管理員組(因為所有管理員都應該能夠執行用戶可以執行的操作)。 問題是UserPrincipal.FindByIdentity(ctx, "SomeAdminAccountName").GetGroups()
不包括Users
組。
如果我使用GroupPrincipal.FindByIdentity(ctx, groupName).Members
我確實看到Administrator
組是其中的一部分,但是不包括Administrator帳戶。
我的問題是:
我是否需要進行遞歸組檢查才能找到用戶,或者還有其他找不到的方法嗎?
要根據組檢查用戶,我可以嘗試IsMemberOf。
您還可以從另一個方向解決問題,找到組並使用帶有遞歸標志集的GetMembers函數獲取所有成員。 由於大多數應用程序使用的組數量很少,因此您應該可以將其緩存以備重用,在我的工作中,通常可以接受5到30分鍾的緩存時間。
您可能是Windows用戶訪問控制(Vista或Win7)的受害者。 當管理員在啟用UAC的情況下登錄時,Windows會創建一個“拆分令牌”,即Windows運行時就好像其帳戶不屬於管理員組一樣,除非/直到明確提高了他們對運行進程的權限。 您可以通過以admin身份運行(或者如果以VS調試模式運行,則以admin身份啟動VS)來提升執行過程,從而驗證是否是這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.