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