C#学习教程:C#ActiveDirectory LDAP组查询分享


C#ActiveDirectory LDAP组查询

基本上我要做的是,我有一个ASP.Net Web应用程序,它使用Forms Authentication和一些自定义代码将它链接到ActiveDirectory(非常类似于它的工作原理)。

但是,每当我查询用户组的域控制器时,它只返回它们明确在的组而不是子组(id est,用户所属的特定安全组,比如组A,即组成员我想要的组,比如组B,用户明确在组A中,但只是隐含在组B中,因为组A是组B的成员)。

我已经阅读了tokenGroups查询可以帮助我在这里,但目前我没有办法解析这些数据。

然而,最可取的是,如果我可以通过LDAP查询传递某些组,并且如果该用户位于该组内,则让Domain控制器只给我一个布尔值(true / false)。

有什么建议?

是的,“通常” user.Properties["memberOf"]仅返回直接成员资格。

但是,如果您使用的是.NET 3.5,则可以使用更现代的“基于主体”方法:

 using(PrincipalContext ctx = new PrincipalContext(ContextType.Domain)) { using(Principal p = Principal.FindByIdentity(ctx, "yourUserName")) { var groups = p.GetGroups(); using (groups) { foreach (Principal group in groups) { Console.WriteLine(group.SamAccountName + "-" + group.DisplayName); } } } } 

此方法(将“System.DirectoryServices.AccountManagement”程序集的引用添加到项目中)应该可以工作并传递用户的主要组及其嵌套组成员身份。

如果您使用的是.NET 2.0 / 3.0并且无法向上移动,那么通过阅读“tokenGroups”属性来使用该方法是最好的方法 – 请参阅Ryan Dunn优秀博客文章中有关如何完成所有这些操作的详细信息, Enumerating .NET中的令牌组(tokenGroups) 。

上述就是C#学习教程:C#ActiveDirectory LDAP组查询分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/959781.html

发表评论

邮箱地址不会被公开。 必填项已用*标注