通过活动目录

时间:2015-06-07 13:31:34

标签: c# login active-directory

我想通过Active Directory创建LogIn按钮。 所以我有一个想法从他的域名中取名字登录用户(Windows):

 string Name = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

然后在上面登录Group:

 string Group = System.Security.Principal.WindowsIdentity.GetCurrent().Groups.ToString(); // <---I think this is wrong ? 
 string allowedGroup = "Admins";  

然后像:

if(Name == string.Empty)
 {
    MessageBox.Show("Your Name in domain doesn't exist");
 }

if(Group.ToString() != allowedGroup)
 {
    MessageBox.Show("You don't have permissions to log in");
 }
else
 {
    MessageBox.Show("Hello");
 }

我认为我的“聚会”是错误的。我该怎么做?我不知道如何准确搜索分配了User的一个或两个组。 将用户分配到多个组时会怎样?

2 个答案:

答案 0 :(得分:0)

这是使用Windows身份授权登录的重点。

1)获取用户的Windows身份。

2)使用Windows标识对象获取名称和组等其他信息。 使用组名来验证用户请求。 希望这会帮助你。如有任何问题,请在评论中写下。

System.Security.Principal.WindowsIdentity WI =  System.Security.Principal.WindowsIdentity.GetCurrent();
        string sUserName = WI.Name;
        bool bAuthorized = false;
        string allowedGroup = "Admins";
        IdentityReferenceCollection irc = WI.Groups;
        foreach (IdentityReference ir in irc)
        {
            if(ir.Translate(typeof(NTAccount)).Value == allowedGroup)
            {
                bAuthorized = true;
                break;
            }
        }
        if(string.IsNullOrEmpty(sUserName))
        {
            MessageBox.Show("Your Name in domain doesn't exist");
        }
        if(bAuthorized == false)
        {
            MessageBox.Show("You don't have permissions to log in");
        }
        else
        {
            MessageBox.Show("Hello");
        }

答案 1 :(得分:0)

好的,我知道了。感谢Pankaj。

    System.Security.Principal.WindowsIdentity WI = System.Security.Principal.WindowsIdentity.GetCurrent();
    string sUserName = WI.Name;
    bool bAuthorized = false;
    string allowedGroup = "Admins";
    IdentityReferenceCollection irc = WI.Groups;
    foreach (IdentityReference ir in irc)
    {
      NTAccount accInfo = (NTAccount)ir.Translate(typeof(NTAccount));

        if (accInfo.Value == allowedGroup)
        {
           bAuthorized = true;
           break;
        }
    }
    if(string.IsNullOrEmpty(sUserName))
    {
        MessageBox.Show("Your Name in domain doesn't exist");
    }
    if(bAuthorized == false)
    {
        MessageBox.Show("You don't have permissions to log in");
    }
    else
    {
        MessageBox.Show("Hello");
    }