пожалуйста, уделите несколько минут и полностью прочитайте мой вопрос .вот моя проблема: я хочу подключиться к серверу LDAP с помощью C # для веб-приложения, означает, что клиенты подключаются к серверу asp.net.
* -Сервер LDAP и сервер приложений не совпадают.
** - Они не находятся в одном домене.
Я пытался 4 различными способами и не смог решить проблему ни одним из них.
1-
var credentials = new NetworkCredential(username, password);
var serverId = new LdapDirectoryIdentifier("domain.net");
var conn = new LdapConnection(serverId, credentials);
conn.Bind();
2-
System.DirectoryServices.DirectoryEntry entry = new System.DirectoryServices.DirectoryEntry("LDAP://domain.net/DC=domain,DC=net");
entry.Username = "username";
entry.Password = "password";
System.DirectoryServices.DirectorySearcher searcher = new System.DirectoryServices.DirectorySearcher(entry);
searcher.Filter = "(&(objectClass=user))";
var results = searcher.FindAll();
Проблема этих двух способов заключается в том, что пользователь должен иметь доступ к серверу для входа в систему, и мы знаем,что есть только администратор системы, который имеет разрешение.
3-
PrincipalContext pc = new PrincipalContext(ContextType.Domain, "domain.net");
var ret = pc.ValidateCredentials(model.UserName, model.Password);
проблема в том, что сервер должен находиться в домене сервера ldap.у нас есть это ограничение !!
4-
https://auth0.com/blog/using-ldap-with-c-sharp/
public bool validateUser(string username, string password)
{
var sha1 = new SHA1Managed();
var digest = Convert.ToBase64String(sha1.ComputeHash(System.Text.Encoding.UTF8.GetBytes(password)));
var request = new CompareRequest(string.Format("uid={0},ou=users,dc=example,dc=com", username),
"userPassword", "{SHA}" + digest);
var response = (CompareResponse)connection.SendRequest(request);
return response.ResultCode == ResultCode.CompareTrue;
}
этот код ничего не возвращает.будет очень полезно, если есть запрос для сравнения имен пользователей и паролей.этот код, кажется, использует этот способ, но существуют различные типы алгоритмов хеширования.Я пытался использовать SHA1 и MD5, а также userPassword, атрибут unicodePwd.но возвращение пусто все время.
это лучшее решение для размещения обоих серверов в одном домене?любое другое решение, большое спасибо.