Как проверить имя пользователя и пароль в system.directoryservices.protocols?
У нас есть продукт, который использует Active Directory для аутентификации пользователей и предоставления групп пользователей и администраторов в клиентских системах.
Недавно мы подобрали нового клиента, который использует Novell для аутентификации.
Что я уже пробовал:
Я нашел способ убедиться, что пользователь является членом групп пользователей или администраторов, но я не могу понять, как изменить поле SearchRequest, чтобы проверить, что комбинация имени пользователя и пароля действительна.
Вот как я запрашиваю информацию о пользователях, чтобы убедиться, что они находятся в данной группе:
private static String _certificatePath; private static String _server; private static SearchResponse Query(String user, String pwd, out String error) { SearchResponse result = null; error = String.Empty; if (File.Exists(_certificatePath)) { var identifier = new LdapDirectoryIdentifier(_server, false, false); try { using (var connection = new LdapConnection(identifier)) { connection.SessionOptions.ProtocolVersion = 3; var cert = new X509Certificate(); cert.Import(_certificatePath, null, X509KeyStorageFlags.DefaultKeySet); connection.ClientCertificates.Add(cert); connection.AuthType = AuthType.External; connection.AutoBind = false; var request = new SearchRequest() { DistinguishedName = user, //Find this person Filter = "(objectClass=*)", //The type of entry we are looking for Scope = System.DirectoryServices.Protocols.SearchScope.Subtree, //We want all entries below this ou }; result = (SearchResponse)connection.SendRequest(request); //Run the query and get results } } catch (Exception err) { error = String.Format("SDSP::Query {0}: {1}", err.GetType(), err.Message); } } else { error = "The system cannot find the Cryptography Certificate at the path specified in the Application Configuration file."; } return result; }
Как бы я создал SearchRequest для проверки комбинации user / pwd?