gpt4 book ai didi

ASP.NET 用户未显示所有 Active Directory 组

转载 作者:行者123 更新时间:2023-12-01 10:07:47 25 4
gpt4 key购买 nike

我正在尝试使用 Windows 身份验证和事件目录组来管理应用程序内的安全性。我遇到的问题是,在我试图验证的页面后面的代码中,访问 ASP.NET 网站的用户是否是特定 AD 组的成员,然后基于此显示/隐藏一些项目。我遇到的问题是我似乎无法获得用户所属的所有组以便进行测试。我在下面包含了我用来列出用户所属的所有组的代码。此代码确实会返回多个组,但不会返回所有组。我已在 AD Controller 中验证所有组似乎都设置为相同。知道我做错了什么吗?

Private Function GetCurrentGroups() As ArrayList
Dim groups As New ArrayList()
For Each group As System.Security.Principal.IdentityReference In System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups
groups.Add(group.Translate(GetType(System.Security.Principal.NTAccount)).ToString())
Next

groups.Sort()

Return groups
End Function

最佳答案

您没有做错任何事 - 您很可能只看到您用户的直接 组成员身份。

任何嵌套成员资格——用户GroupA的成员,而后者又是GroupB的成员——通常是未显示 - 因此在这种情况下,您会看到 GroupA 而不是 GroupB

如果您确实需要此信息,则必须直接询问 Active Directory(使用类似于 System.DirectoryServices.AccountManagement 命名空间 - great MSDN article about using it 的内容)。

S.DS.AM 命名空间包含一个代表 AD 中用户的 UserPrincipal 类,这个类有一个名为 .GetAuthorizationGroups( ) 返回用户所属的所有组 - 包括嵌套组。

关于ASP.NET 用户未显示所有 Active Directory 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8764926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com