Подключитесь к eDirectory, используя учетные данные приложения. Затем аутентифицируйте пользователя
Мне нужно подключиться к NetIQ eDirectory с помощью.NET & C#. Соединение должно быть открыто с использованием учетных данных приложения. После того, как соединение открыто, мне нужно проверить учетные данные пользователя с правами учетных данных приложения, используя метод, аналогичный S.DS.AccountManagement.
using (var context = new PrincipalContext(ContextType.Domain, path, appUserDn, appPassword))
{
//Username and password for authentication.
var valid = context.ValidateCredentials(userDn, password);
}
Я пробовал No vell.Directory.Ldap, S.DS.DirectoryEntry и S.DS.AccountManagement. Последний требует AD и не применяется.
Протестируйте с использованием No vell.Directory.Ldap..
using (var cn = new LdapConnection())
{
cn.Connect(server, int.Parse(port));
cn.Bind(appUserDn, appPassword); //throws exception if invalid credentials..
var passwordAttr = new LdapAttribute("userPassword", password);
cn.Compare(userDn, passwordAttr); // Only compares password, so no locked account check, etc.
}
Мой текущий прототип использует S.DS.Protocols.
var networkCredential = new NetworkCredential(
appUserDn,
appPassword);
using (proto.LdapConnection cn = new proto.LdapConnection(new proto.LdapDirectoryIdentifier(server, int.Parse(port)), networkCredential, proto.AuthType.Basic))
{
cn.Bind();
/// Next validate user credentials..
}
Я не могу найти способ проверить учетные данные пользователя, кроме переназначения NetworkCrentials и повторной привязки, используя имя пользователя и пароль. Как мне поступить?
1 ответ
Оказывается, наш клиент ошибся. Правильный способ - это связать соединение напрямую с учетными данными отдельного пользователя, как я продемонстрировал в примере Novell.Directory.Ldap.
На форуме NetIQ было сообщение о выполнении сценария оболочки, но я не получил его.