DirectoryEntry类要求用户名和密码作为字符串以明文形式传入。在c#中,字符串在用于存储敏感数据时通常是不安全的(使用后无法将内存清零)。如何安全地使用DirectoryEntry查询活动目录而不用冒着在内存中保留密码用户名的风险?
我知道用于存储此数据的内存将在使用后释放回堆中,但不会被清除!
如果我对我的任何断言有误,请告诉我。
https://msdn.microsoft.com/en-us/library/wh2h7eed(v=vs.110).aspx
答案 0 :(得分:2)
无法使用不使用纯文本的凭据在.NET中查询LDAP或AD。
如果您不想将密码存储在内存中,请不要使用它们,请为用户提供运行应用程序的权限,以便执行您需要的操作并使用Windows身份验证。
答案 1 :(得分:1)
最安全的方法可能是使用访问AD所需的凭据运行应用程序。如果它是桌面应用程序,那么这很简单(只需运行 - 具有相应凭据的应用程序)。
在ASP.NET中,它有点棘手,但可以通过模拟完成(无论是针对整个请求,还是仅针对一段代码):https://support.microsoft.com/en-ca/help/306158/how-to-implement-impersonation-in-an-asp-net-application