.net - 密码是否使用 DirectoryEntry 安全传输

标签 .net authentication active-directory ldap directoryentry

我正在审查通过创建 DirectoryEntry 对象来针对 LDAP 服务器验证用户凭据的代码,如下所示

DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, pwd);

try
{
    object obj = entry.NativeObject;
}
catch (Exception ex)
{
throw new Exception("Error authenticating user. " + ex.Message);
}

如果未引发异常,则代码假定用户凭据正常。

该代码工作正常,但我的问题与它的安全性有关。由于使用了SSL,因此客户端和Web服务器之间的通信是安全的,但是Web服务器和LDAP服务器之间的通信是否存在漏洞?

DirectoryEntry 构造函数还有另一个重载参数,称为 AuthenticationType。由于上面的代码中没有指定任何参数,因此它使用 AuthenticationType = None ,这相当于基本身份验证。

使用AuthenticationType = SecureAuthenticationType = SecureSocketsLayerAuthenticationType = Encryption或者它们的按位组合会更好吗?

迈克尔

最佳答案

当构造函数中未提供 AuthenticationType 时,默认使用 AuthenticationType.Secure。此选项已经对密码进行了加密,因为它使用 NTLM/Kerberos 进行身份验证。

您还可以指定密封标志(与安全一起)来加密所有流量(不仅仅是身份验证)。这需要 Kerberos。

您要连接的 LDAP 服务器是 AD 吗? 我验证了上述内容适用于 AD。 (流量已加密,如wireshark中所示)

关于.net - 密码是否使用 DirectoryEntry 安全传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25262884/

相关文章:

c# - 如何将字符串中的值从 0,00 更改为 0.00

c# - Entity Framework 5 SaveChanges() 不回滚尝试的事务

c# - C# 中的 Active Directory 查询性能

.net - 自托管 WCF 服务的视觉反馈

c# - 当键是枚举时,以 "Document"表示序列化字典

javascript - 通过 iframe 验证正在使用我的服务的网站

authentication - 无需 SSL 的安全身份验证

php - 使用 php/apache 中的身份验证脚本保护目录中的文件

c# - 如何使用 PowerShell 远程处理从 C# 向 Active Directory 用户添加图像?

c# - 在 C# .NET 中连接到 Active Directory 服务器时出现问题