如何在 AD C# 中检查用户是否是通讯组列表/安全组的成员

发布于 2024-11-26 14:16:01 字数 561 浏览 1 评论 0原文

我使用下面的代码来检查给定用户是否属于 AD 中的通讯组。

static bool IsUserMemberOf(string userName, string groupName)
{
  using (var ctx = new PrincipalContext(ContextType.Domain))
  using (var groupPrincipal = GroupPrincipal.FindByIdentity(ctx, groupName))
  using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, userName))
  {
    return userPrincipal.IsMemberOf(groupPrincipal);
  }
}

我正在调用上述方法,其值为 IsUserMemberOf("domain\\username","domain\\groupname") 但我看到一个空指针异常,因为 groupPrincipal 具有空值。

在这方面有什么帮助吗?

I am using below piece of code to check the whether a given user is part of distribution group in AD.

static bool IsUserMemberOf(string userName, string groupName)
{
  using (var ctx = new PrincipalContext(ContextType.Domain))
  using (var groupPrincipal = GroupPrincipal.FindByIdentity(ctx, groupName))
  using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, userName))
  {
    return userPrincipal.IsMemberOf(groupPrincipal);
  }
}

i am calling above method with values as IsUserMemberOf("domain\\username","domain\\groupname")
But i see a null pointer exception because groupPrincipal is having null value.

Any help in this regard?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凉宸 2024-12-03 14:16:01

这只是意味着:

groupPrincipal = GroupPrincipal.FindByIdentity(ctx, groupName)) 

返回空指针,因为您的组不存在于您的域中。您只需测试您的 var ctxuserPrincipalgroupPrincipal 即可。

It's just means that :

groupPrincipal = GroupPrincipal.FindByIdentity(ctx, groupName)) 

Returns a null pointer because your group is not in present in your domain. You just have to test your var ctx, userPrincipal and groupPrincipal.

给不了的爱 2024-12-03 14:16:01

实际上,我的组与我正在查询的用户位于不同的域中:
我对我的程序做了以下更改,现在正在工作。

我这样打电话:

IsUserMemberOf("domain1\\username","domain2\\groupname")


static bool IsUserMemberOf(string userName, string groupName)
{
 using (var ctx = new PrincipalContext(ContextType.Domain,"domain1"))
 using (var groupPrincipal = GroupPrincipal.FindByIdentity(new PrincipalContext(ContextType.Domain,"domain2"), groupName))
 using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, userName))
 {
    return userPrincipal.IsMemberOf(groupPrincipal);
 }

}

Actually my Group is in different domain than the User which I am querying for:
I made below change to my program and working now.

and i am calling like this:

IsUserMemberOf("domain1\\username","domain2\\groupname")


static bool IsUserMemberOf(string userName, string groupName)
{
 using (var ctx = new PrincipalContext(ContextType.Domain,"domain1"))
 using (var groupPrincipal = GroupPrincipal.FindByIdentity(new PrincipalContext(ContextType.Domain,"domain2"), groupName))
 using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, userName))
 {
    return userPrincipal.IsMemberOf(groupPrincipal);
 }

}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文