jp2code Ответов: 0

Как проверить имя пользователя и пароль в 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?

0 Ответов