用户(域外)是活动目录组的一部分

时间:2014-02-28 16:13:07

标签: c#

在C#中,我正在尝试针对ActiveDirectory中的组对用户进行身份验证。以下代码适用于我们域中的用户,但我们也有其他国家/地区的用户登录到我们的vpn并需要访问我的程序。下面的代码在尝试运行时会崩溃。我已经尝试了一切,但我无法理解这一点。

var principalContext = new PrincipalContext(ContextType.Domain)
var groupPrincipal = GroupPrincipal.FindByIdentity(principalContext, IdentityType.Name, "myGroup")
var members = groupPrincipal.GetMembers(true).ToList()
var isMember = members.Any(m => m.Guid == userPrincipal.Guid)

如何测试用户是否属于我们域外的Active Directory组?

Thankx

1 个答案:

答案 0 :(得分:0)

VPN用户是否针对域进行身份验证?另外,你是如何获得userPrincipal的?

以下是从另一方面解决问题的一些代码。它有点旧,但我用它来验证用户可以运行我的一个小程序。

var userGroups = WindowsIdentity.GetCurrent().Groups;

foreach (var domainGroup in userGroups)
{
    var group = domainGroup.Translate(typeof(NTAccount));

    if (group.Value == "domain\\myGroup")
    {
        isMember = true;
    }
}

当然,如果需要,您可以将其转换为适当的linq语句。