当前位置 : 主页 > 网络编程 > ASP >

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

来源:互联网 收集:自由互联 发布时间:2021-06-24
我正在尝试使用 Windows身份验证和活动目录组来管理应用程序中的安全性.我遇到的问题是,在我试图验证的页面后面的代码中,用户点击ASP.NET网站是特定AD组的成员,然后根据它显示/隐藏一
我正在尝试使用 Windows身份验证和活动目录组来管理应用程序中的安全性.我遇到的问题是,在我试图验证的页面后面的代码中,用户点击ASP.NET网站是特定AD组的成员,然后根据它显示/隐藏一些项目.我遇到的问题是,我似乎无法获得用户所属的所有组以进行测试.我已经包含了下面的代码,用于列出用户所属的所有组.此代码确实返回了许多组,但它没有返回所有组.我已在AD控制器中验证所有组似乎设置相同.我有什么想法我做错了吗?

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的成员,而GroupA的成员又是GroupB的成员 – 通常不会显示 – 所以在这种情况下,您会看到GroupA而不是GroupB.

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

S.DS.AM命名空间包含表示AD中用户的类UserPrincipal,此类具有一个名为.GetAuthorizationGroups()的方法,该方法将返回用户所属的所有组 – 包括嵌套组.

网友评论