【发布时间】:2022-06-30 14:32:01
【问题描述】:
我的要求是更改AD的用户密码。于是,我通过https://bl.ocks.org/magnetikonline/0ccdabfec58eb1929c997d22e7341e45成功在AD域服务器上创建了LDAP SSL安全连接。
使用ldp.exe 工具(在同一个AD 服务器上)我能够连接SSL。这意味着在 AD 服务器上启用了 LDAPS。
现在我正在尝试使用位于客户端的库 Novell.Directory.Ldap 使用以下代码从 ASP.NET Core 应用程序连接它:
public LdapConnection GetLDAPConnection(IOptions<ADConfiguration> _settings)
{
LdapConnection connection = new LdapConnection { SecureSocketLayer = true };
connection.Connect(_settings.Value.DomainIPAddress, _settings.Value.Port); //port is 636
connection.Bind(_settings.Value.AdminDn, _settings.Value.Password);
if (connection.Bound)
{
return connection;
}
return null;
}
Connect 方法抛出此错误:
System.Security.Authentication.AuthenticationException: '远程证书被提供的 RemoteCertificateValidationCallback 拒绝。'
客户端机器是否也有 SSL 设置?或者我还缺少什么?请帮忙
【问题讨论】:
-
如果你使用 ASP.NET Core,你应该看看
System.DirectoryServices或System.DirectoryServices.Protocols,这似乎与你的Novell.Directory.Ldap很接近。 @Gabriel-Luci 已经回答了。System.DirectoryServices.Protocols中的LdapConnection.SessionOptions.VerifyServerCertificate可以帮助您验证证书。回调只需要返回true。 -
System.DirectoryServices仅支持窗口。我想要跨平台。 -
System.DirectoryServices.Protocols是跨平台的。
标签: asp.net-core active-directory ldap ssl-certificate ldapconnection