确定用户是否在Active Directory组中

时间:2013-01-15 19:48:45

标签: asp.net iis

我正在使用以下代码来确定用户是否在特定组中。代码在我的本地开发环境中运行良好,但是当我将它推送到我们的开发服务器时,它始终返回false。

我是否需要在IIS中配置某些内容?

注意:此代码仅在特定页面上运行。它并非全局用于所有网页。

Public Function IsInGroup(ByVal GroupName As String)
    Dim MyIdentity As System.Security.Principal.WindowsIdentity = System.Security.Principal.WindowsIdentity.GetCurrent()
    Dim MyPrincipal As System.Security.Principal.WindowsPrincipal = New System.Security.Principal.WindowsPrincipal(MyIdentity)

    '' Web team needs access to all pages. See web.config for value.
    If MyPrincipal.IsInRole(ConfigurationManager.AppSettings("ISSupportAllAccessADGRoup").ToString.ToUpper) Then
        Return True
    Else
        If MyPrincipal.IsInRole(GroupName) Then
            Return True
        Else
            Return False
        End If
    End If

End Function

1 个答案:

答案 0 :(得分:0)

请参阅以下页面: http://msdn.microsoft.com/en-us/library/system.web.httprequest.logonuseridentity.aspx

Request.LogonUserIdentity.Name公开Windows.Princpal。在任何情况下,这都需要 1)启用Windows身份验证 2)在这种情况下,启用了表单身份验证,并将有效的域凭据传递给应用程序。

否则匿名访问会失去目的,并允许任何人在没有IDENTITY的情况下使您的代码变得毫无意义。如果有一部分函数需要识别用户考虑设置虚拟目录/ admin,例如可以拥有自己的web.config并启用了Windows身份验证。对于IIS(在服务器上),IUSR是默认的IIS帐户,当没有其他可用的时候使用,我认为ABC \ John Doe是您工作站上的帐户。我还要说你在本地运行的IIS实例没有设置为匿名。