У меня проблема с чем-то, с чем я никогда не сталкивался раньше, это подключение к LDAP из приложения NodeJS. До сих пор я даже не знал, что существует такая вещь, как LDAP, поэтому я учился на ходу. Вот почему это может быть глупый вопрос, но я не нашел краткого ответа.Что мне нужно для подключения к LDAP и привязки к более «общему» DN для поиска пользователей?
Требование: «Зарегистрируйтесь в LDAP из вашего приложения с пользователем и передайте его на экране входа в систему» . Клиент имеет LDAP и хочет использовать его для аутентификации пользователей нашего приложения, поэтому пользователь и пароль, введенные на экране входа в систему, используются для входа в LDAP.
Я понимаю, что мне нужно три вещи для подключения к LDAP:
- URL сервера
- пользователю (с прохода)
- И отличительное связываться с
В настоящее время я использую ldapjs
для подключения к NodeJS. Я понимаю, что операция, которую мне нужно использовать для аутентификации пользователя, it's the bind
operation. Для этого мне нужно создать сервер (уже сделанный и без проблем) и передать dn и пароль. Я предполагаю, что DN включает пользователя. Что-то вроде
CN=myuser,OU=MyOrg,OU=Users,DN=MyLdapServer,DN=com
, который работает ... при условии, что пользователи принадлежат к одной и той же «ветви». То есть, если все они находятся, скажем, OU=MyOrg
. Вот почему я могу «жестко кодировать» DN в bind()
и просто менять пользователя с заменой.
Проблема в том, что не все они принадлежат к одной и той же «ветке» (я не знаю технического названия для этого). Скажем, у меня есть некоторые из OU=MyOrg
, некоторые из них: OU=MyOtherOrg
...
Так что я не знаю, с чего начинается организация пользователя, поэтому я не могу заставить его привязываться к клиенту LDAP, потому что мне не хватает DN ,
Клиент предоставил нам пример из другого приложения, использующего для этого ASP.NET и ADO.NET, используя что-то вроде команды SQL для получения информации LDAP. Дело в том, что эквивалент DN был более общим. Что-то вроде
ldap://MyLdapServer.com/CN=[the_user_provided]
Это, по-видимому, работал. Если я попытаюсь сделать то же самое, используя этот более «общий» маршрут DN (который, я полагаю, является узлом выше в дереве LDAP), предоставляя один из паролей пользователей, я получаю ошибку проверки подлинности.
Итак, как получилось? Что мне не хватает? Что мне нужно для входа пользователей в LDAP, используя только «CN = [имя пользователя]» DN? Это то, что может использовать только ADO.NET?
Спасибо, извините, если это слишком общий вопрос.
Для связи с Active Directory вам не нужно знать полное имя пользователя. Существует список всех доступных доступных методов на этой странице в документах (https://msdn.microsoft.com/en-us/library/cc223499.aspx). Таким образом, вы можете использовать 'user @ domain.com' в качестве примера. Или просто предоставленное имя пользователя будет работать в большинстве случаев. – ChadSikorra
@ChadSikorra: да, это было на самом деле решение. Благодарю. – Heathcliff
@ChadSikorra: если вы хотите опубликовать этот ответ в виде отдельного ответа, я могу указать его как правильный ответ. – Heathcliff