На моей машине запущен экземпляр AD / LDS, и я пытаюсь подключиться к нему с помощью класса System.DirectoryServices.Protocols.LdapConnection.По какой-то причине каждый раз, когда я вызываю метод Bind (), он выдает исключение LdapException, сообщающее о неверных учетных данных.
Вот код, который я использую для настройки соединения:
var ldapDirectoryIdentifier = new LdapDirectoryIdentifier(config.Server.Host, config.Server.Port);
var creds = new NetworkCredential(config.Credentials.Username, config.Credentials.Password)
{
Domain = config.Credentials.
};
ldapConnection = new LdapConnection(ldapDirectoryIdentifier, creds, AuthType.Basic);
if (config.Server.Secure)
{
cert = new X509Certificate(config.Server.Certificate);
ldapConnection.SessionOptions.SecureSocketLayer = true;
ldapConnection.SessionOptions.VerifyServerCertificate = CheckCertificate;
}
ldapConnection.SessionOptions.ProtocolVersion = 3;
try
{
ldapConnection.Bind();
}
catch (LdapException e)
{
Log.LogException(e);
Environment.Exit(e.ErrorCode);
}
Конфигурация поступает из файла App.config, как в следующем примере:
<server host="host" port="389"/>
<credentials username="username" password="password" domain="domain"/>
<usersearch base="ou=test,dc=test,dc=com" filter="(middlename=user)" objectclass="inetorgperson"/>
<devicesearch base="ou=test,dc=test,dc=com" filter="(sn=device)" objectclass="inetorgperson"/>
Я попытался изменить часть учетных данных, чтобы подключить ее;установка username="DOMAIN\user"
, с и без записи домена для учетных данных.Я пробовал возиться со строками подключения, например <server host="LDAP://host[:389]"/>
.Он просто говорит, что учетные данные, которые я использую для подключения к экземпляру с помощью ADSI Edit и ldp, являются недействительными.
Я МОГУ соединиться с теми же учетными данными домена (локальной учетной записью пользователя), используя System.DirectoryServices.DirectoryEntry
, поэтому я подозреваю, что бит AD / LDS является разборчивым.
У кого-нибудь есть идеи?