Я пытаюсь аутентифицировать пользователя, используя LDAP
Я использую этот код:
public bool IsAuthenticated(string domain, string username, string pwd)
{
DirectoryEntry nRoot = new DirectoryEntry("LDAP://192.134.1.142/dc=testDomain,dc=com");
nRoot.AuthenticationType = AuthenticationTypes.None;
nRoot.Username = "uid=username,dc=testDomain,DC=com"; //full dn
nRoot.Password = "pwd";
try
{
//Bind to the native AdsObject to force authentication.
Object obj = nRoot.NativeObject;
DirectorySearcher search = new DirectorySearcher(nRoot);
search.SearchScope = SearchScope.Subtree;
search.Filter = "uid=username";
search.PropertiesToLoad.Add("uid");
SearchResult sr = search.FindOne();
if(null == sr )
{
return false;
}
// Update the new path to the user in the directory
_path = sr.Path;
_filterAttribute = (String)result.Properties["uid"][0];
}
catch (Exception ex)
{
throw new Exception("Error authenticating user. " + ex.Message);
}
return true;
}
Здесь, если пользователь не является частью какого-либо подразделения, код работает нормально, но если он является частью подразделения, он не будет работать, и я получаю ошибку
System.Runtime.InteropServices.COMException
на
// Привязка к нативному AdsObject для принудительной аутентификации.
Объект obj = nRoot.NativeObject;
Как я могу получить подтверждение пользователя, принадлежащего OU или любой другой группе ??
Я пытался кодировать OU, и это сработало, но я не могу попросить пользователя ввести его OU
nRoot.Username = "uid=username,ou=test,dc=testDomain,DC=com"; //full dn