簡體   English   中英

檢查組成員

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM