目录条目 |使用加密或 SSL 时出错
Directory entry | Error when using Encryption or SSL
我正在尝试使用以下代码加密我的 Active Directory 访问权限:
// Already tried different paths (LDAP://domain.com, LDAPS://domain.com etc.)
string path = "LDAP://domain.com:636";
var ldapConnection = new DirectoryEntry(path, "loginName", "password");
ldapConnection.AuthenticationType = AuthenticationTypes.Secure; // Works perfectly
ldapConnection.AuthenticationType = AuthenticationTypes.Encryption; // Doesn't work
ldapConnection.AuthenticationType = AuthenticationTypes.SecureSocketsLayer; // Doesn't work
两种无效的身份验证类型抛出相同的异常:
System.DirectoryServices.DirectoryServicesCOMException (0x8007052E):
The username or password is incorrect.
首先我发现我的 AD DS 上缺少证书服务器并安装了它。但是安装后我得到了同样的错误。我可能需要 install/configure 更多东西。如果是这样,请分享需要做的资源。
我的问题: 我是否需要任何先决条件(e.x。在 AD DS 上)才能使用 AuthenticationTypes.Encryption
或 AuthenticationTypes.SecureSocketsLayer
?还是我需要不同的用户才能使用此身份验证类型?
非常感谢任何帮助。
试试这个:
ldapConnection.AuthenticationType = AuthenticationTypes.Secure | AuthenticationTypes.SecureSocketsLayer;
Secure
定义使用的身份验证类型,而 SecureSocketsLayer
定义连接类型。它们有不同的用途,因此可以一起使用。
但实际上,您不需要指定任何内容。默认值为 Secure
,如果您指定端口 636,它将使用 SSL,因为这是服务器接受该端口连接的唯一方式。这就是当您仅指定 Secure
.
时它起作用的原因
如果您单独指定 SecureSocketsLayer
,这也是它失败的原因。一旦您指定了任何内容,默认值 (Secure
) 将被丢弃,并且仅使用您指定的内容。如果没有 Secure
,它将尝试基本身份验证(又名“简单绑定”),这可能在您的域上被禁用。
更多阅读 AuthenticationTypes Enum 的文档。
我正在尝试使用以下代码加密我的 Active Directory 访问权限:
// Already tried different paths (LDAP://domain.com, LDAPS://domain.com etc.)
string path = "LDAP://domain.com:636";
var ldapConnection = new DirectoryEntry(path, "loginName", "password");
ldapConnection.AuthenticationType = AuthenticationTypes.Secure; // Works perfectly
ldapConnection.AuthenticationType = AuthenticationTypes.Encryption; // Doesn't work
ldapConnection.AuthenticationType = AuthenticationTypes.SecureSocketsLayer; // Doesn't work
两种无效的身份验证类型抛出相同的异常:
System.DirectoryServices.DirectoryServicesCOMException (0x8007052E): The username or password is incorrect.
首先我发现我的 AD DS 上缺少证书服务器并安装了它。但是安装后我得到了同样的错误。我可能需要 install/configure 更多东西。如果是这样,请分享需要做的资源。
我的问题: 我是否需要任何先决条件(e.x。在 AD DS 上)才能使用 AuthenticationTypes.Encryption
或 AuthenticationTypes.SecureSocketsLayer
?还是我需要不同的用户才能使用此身份验证类型?
非常感谢任何帮助。
试试这个:
ldapConnection.AuthenticationType = AuthenticationTypes.Secure | AuthenticationTypes.SecureSocketsLayer;
Secure
定义使用的身份验证类型,而 SecureSocketsLayer
定义连接类型。它们有不同的用途,因此可以一起使用。
但实际上,您不需要指定任何内容。默认值为 Secure
,如果您指定端口 636,它将使用 SSL,因为这是服务器接受该端口连接的唯一方式。这就是当您仅指定 Secure
.
如果您单独指定 SecureSocketsLayer
,这也是它失败的原因。一旦您指定了任何内容,默认值 (Secure
) 将被丢弃,并且仅使用您指定的内容。如果没有 Secure
,它将尝试基本身份验证(又名“简单绑定”),这可能在您的域上被禁用。
更多阅读 AuthenticationTypes Enum 的文档。