在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
答案 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语句。