2015-10-13 3 views
1

У меня есть время, когда omniauth-ldap работает правильно с нашим сервером AD, и я считаю, что это потому, что наши имена пользователей имеют наши имена доменов в них.Недопустимые учетные данные Omniauth-ldap

Это успешно подключиться к нашему серверу LDAP:

ldapsearch -h ldap.ourdomain.com -b "dc=ourdomain,dc=int" -D "OURDOMAIN\username" -w <password> '(sAMAccountName=username)' 

Но эти параметры в OmniAuth только в результате "неправильные учетные данные"

Padrino.use OmniAuth::Strategies::LDAP, 
    :host => "ldap.ourdomain.com", 
    :base => "dc=OURDOMAIN,dc=INT", 
    :uid => "sAMAccountName", 
    :bind_dn => 'OURDOMAIN\%{username}', 
    # This is hard coded for now, but I need it to be the value entered by the user 
    :password => "mypassword" 

UPDATE

Работа по этому вопросу Кроме того, я обнаружил, что omniauth-ldap устанавливает метод связывания: анонимным, если: bind_dn и: пароль не установлены.

Однако он не вставляет имя пользователя и не вводит введенный пользователем пароль, если значения установлены.

Что мне нужно

:bind_dn => 'OURDOMAIN\<user entered username>', 
:password => <user entered password> 

но пароль и имя пользователя вводится только при условии, чтобы соединение, если жесткий код им.

ответ

0

Мне пришлось решить эту проблему, создав учетную запись службы. Эта учетная запись регистрирует запросы на существование и действительность пользователя, который фактически пытается войти в систему. Учетные данные учетной записи службы могут быть установлены в вашей конфигурации Omniauth, а затем вы можете использовать omniauth-ldap, как и любую другую методологию omniauth.

1

Это прежде всего из-за выбора дизайна, который делает omniauth-ldap. Дизайн заключается в том, что пользователю, указанному пользователем (email или id), недостаточно, чтобы создать DN (различающееся имя), которое можно использовать для привязки. Следовательно, что OmniAuth LDAP делает

  1. Вызов поиска LDAP (bind_dn и пароль, который используется, если анонимный поиск не разрешено включать в AD/LDAP) для извлечения DN для пользователя.
  2. Затем он привязывается к LDAP/AP, используя DN с шага 1, и пароль, введенный пользователем.

Я считаю, что шаг 1) не требуется. Большинство DN могут быть получены из имени пользователя.

Смежные вопросы