在AD中搜索用户没有

时间:2013-04-22 08:42:30

标签: asp.net vb.net visual-studio-2008

我正在创建一个Web应用程序,用户需要使用其AD凭据登录。在几个页面上,用户可以使用AD执行另一个用户查找。搜索机制如下所示。问题是它需要使用有效的凭据来创建新的目录条目。在开发过程中,我硬编码了我的凭据,认为每个用户都可以通过在Session变量上保留用户ID和密码来使用他们的凭据。但是,我不确定这种方法是否安全。

我想到的另一种方法是安排程序将AD记录导入数据库,但我还没有找到方法。即使我找到它,该程序仍然需要使用某个凭据,不是吗?

我在这里需要一些建议。下面是查找功能的脚本。提前谢谢。

        Dim enTry As DirectoryEntry = New DirectoryEntry(strADSvrIP, user_loginID, user_loginpassword)
        Dim mySearcher As DirectorySearcher = New DirectorySearcher(enTry)


        mySearcher.Filter = "(&(objectCategory=person)(objectClass=user)(|(givenname=" & strKeyword & ")(name=" & strKeyword & ")(sn=" & strKeyword & ")(samAccountName=" & strKeyword & ")))"
        Dim resColl As SearchResultCollection
        Dim resEnt As SearchResult
        Dim list As New List(Of String)

        Try
            resColl = mySearcher.FindAll()

            lblResult.Text = ""

            For Each resEnt In resColl
                If Not resEnt.GetDirectoryEntry.Properties("sn").Value Is Nothing Then
                    lblResult.Text = lblResult.Text & resEnt.GetDirectoryEntry.Properties("samAccountName").Value.ToString() & "-"
                    lblResult.Text = lblResult.Text & resEnt.GetDirectoryEntry.Properties("name").Value.ToString() & "<br>"
                End If
            Next

编辑(决议):

我可以通过在IIS设置上使用ASP.NET Impersonate激活来自活动用户的凭据,并使用以下语法:

        Dim enTry As DirectoryEntry = New DirectoryEntry(strADSvrIP, Nothing, Nothing, AuthenticationTypes.None)

1 个答案:

答案 0 :(得分:0)

通常,您会将应用程序池配置为在域帐户下运行。然后,此帐户将用于搜索AD,而无需对用户名和密码进行硬编码。

或者,要在用户凭据下搜索AD:如果您使用的是Windows身份验证,则可以调用HttpContext.Request.LogonUserIdentity.Impersonate()(或配置应用程序或特定页面以使用自动ASP.NET模拟)。