Аутентифицировать пользователя из определенных групп на сервере LDAP с помощью С#

У меня есть несколько вложенных групп на сервере LDAP и пользователи в этих группах. Как я могу аутентифицировать пользователей с заданным именем пользователя и паролем, выполняя поиск только в группах (а не во всем домене)? Бинд так делает?


person aurora93    schedule 10.07.2018    source источник
comment
Какой у вас сервер LDAP? Вы можете ограничить область поиска, указав Bind OU, но я не уверен, какую службу LDAP вы используете.   -  person Am_I_Helpful    schedule 10.07.2018
comment
Не знаю, у меня есть только список od доменов и групп типа domainName.com dc=first, dc=second, ou=therte... И пользователи и пароли хранятся в этой ou группе, но я конечно могу не видеть их. Мне нужно просто проверить, входят ли они в эти группы и правильный ли пароль. Могу ли я сделать это с помощью простого метода привязки?   -  person aurora93    schedule 10.07.2018
comment
Собственно, я спросил тип сервера LDAP. Можете ли вы подтвердить, что это сервер Windows Active Directory на базе Microsoft?   -  person Am_I_Helpful    schedule 10.07.2018
comment
Да, это. У меня есть доступ с использованием классов Novell.Directory.Ldap или System.DirectoryServices.Protocols LdapConnection.   -  person aurora93    schedule 10.07.2018


Ответы (1)


Как вы подтвердили в разделе комментариев к этому вопросу, сервер LDAP, о котором вы говорите, является сервером Active Directory. Итак, мой ответ основан на этот известный ответ о том, как проверить имя пользователя и пароль в Active Directory, за исключением того, что я Мы внесли изменения, основанные на вашем требовании, чтобы ограничить область поиска.

Если вы работаете с .NET 3.5 или новее, вы можете использовать System.DirectoryServices.AccountManagement. "nofollow noreferrer">PrincipalContext Constructor (ContextType, String, String) и легко проверить свои учетные данные:

// create a "principal context"
using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOUR.DOMAIN",
             "OU=Where,OU=You,OU=Wanna,OU=Search,DC=YOUR,DC=DOMAIN"))
   // change your container to a base OU where all your users are located.
{
    // validate the credentials
    bool isValid = pc.ValidateCredentials("myuser", "mypassword");
}
person Am_I_Helpful    schedule 10.07.2018