簡體   English   中英

使用存儲在sql數據庫中的AD組名稱授權C#應用程序中的用戶

[英]Using AD group names stored in sql database for authorizing users in C# app

我一直在討論這個問題很久了,在任何地方都找不到答案,但是我知道許多公司都在使用我想做的事情,所以我決定將其放在此處。

我想做的是:

  • 將Windows用戶和/或AD組存儲在我的數據庫中,並將其分配給應用程序中的角色。 當然,這些角色將在我的數據庫中鏈接到用戶或組。
  • 對於用戶而言,這很容易,因為您在登錄時已經有了用戶名。
  • 我想在我的應用程序中查找用戶是否屬於存儲在數據庫中的任何廣告組,並相應地分配其權限。

所以這是一個例子:

我知道我的用戶在我的數據庫用戶/組表中有一個條目:我知道他在AD組中,名為“ MyAppGroup \\ MyDomain”。 從數據庫的組列表中找出用戶所在的最簡單方法是什么?

如注釋中所述,您要查找的數據已經存儲在Active Directory中;例如, 您根本不需要將其添加到數據庫中。

您可以使用System.DirectoryServices.AccountManagement API查詢AD(包括組成員身份和大量其他數據)。

這是一個有關如何檢索用戶所屬的組的小示例:

using System.DirectoryServices.AccountManagement;

// ...

public List<string> GetGroupsForUser(string domain, string ou, string samAccountName)
{
    var groups = new List<string>(); 

    using (var principalContext = new PrincipalContext(ContextType.Domain, domain, ou))
    using (var userPrinicpal = UserPrincipal.FindByIdentity(principalContext, 
        IdentityType.SamAccountName, samAccountName))
    {
        if (userPrinicpal == null)
            return null;

        foreach (var securityGroup in userPrinicpal.GetAuthorizationGroups())
            groups.Add(securityGroup.DisplayName);
    }

    return groups;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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