Не удается войти в систему после сбоя, используя omniauth и LDAP - PullRequest
1 голос
/ 14 июня 2011

У меня загадочная проблема с моим первым экспериментом со всевозможными истинами.Я могу войти под своим именем пользователя и паролем, и я могу выйти правильно.Я могу повторить это много раз, но после того, как однажды введу неправильный пароль, я никогда не смогу войти снова, даже если попробую другого пользователя.Я получаю "message"=>"invalid_credentials".Все снова в порядке, если я перезапускаю свое приложение (пока я не наберу неправильный пароль).

До первого сбоя оно соединяется с заданным параметром :bind_dn (см. Ниже), как и ожидалось:

[14/Jun/2011:17:01:33 +0200] conn=7796 op=0 msgId=1 - BIND dn="cn=nss,o=People,o=IAN,o=AD,o=Secret" method=128 version=3

После первого сбоя он соединяется с BIND dn, изготовленным из моего имени пользователя:

[14/Jun/2011:16:45:33 +0200] conn=7780 op=22 msgId=23 - BIND dn="edarabos" method=128 version=3, Invalid DN

Я следовал Railscast # 241 http://railscasts.com/episodes/241-simple-omniauth со следующей конфигурацией (config/initializers/omniauth.rb):

Rails.application.config.middleware.use OmniAuth::Strategies::LDAP\
  , :host => '127.0.0.1'\
  , :method => :plain\
  , :port => 389\
  , :base => 'o=IAN,o=AD,o=Secret'\
  , :uid => 'uid'\
  , :bind_dn => 'cn=nss,o=People,o=IAN,o=AD,o=Secret'\
  , :password => 'TOPSECRET'

Я сделал ошибку?Это ошибка?Заранее спасибо!

- я использую JRuby 1.5.1, Ruby 1.8.7, Rails 3.0.7, omniauth 0.2.6.

UPDATE

Если я переделываю конфигурацию (.... использую OmniAuth :: Strategies :: LDAP ...) после каждого сбоя, я могу использовать ее для успешного входа в систему.Я на секунду поверил, что я закончил, а потом пришла новая проблема.После успешных входа и выхода из системы я не могу войти в систему с другим пользователем, даже если я переделал конфигурацию после успешной аутентификации.

bind_dn, указанный в параметрах, является служебной учетной записью.Omniauth связывается с сервером LDAP с этой учетной записью и выполняет поиск с заданными учетными данными (скажем, «user1»), он находит результат и связывается с uid результата поиска.

При следующей попытке входа (сuser2) поиск LDAP выполняется без повторного связывания в соответствии с конфигурацией.Это мозговая вещь, которую нужно сделать.User1 не является служебной учетной записью, поэтому поиск не дает никаких результатов.Затем он пытается выполнить повторное связывание, используя имя пользователя учетных данных как bind_dn, и завершается неудачно.Это еще одна мозговая вещь, которую нужно сделать, потому что она настроена совершенно иначе!

1 Ответ

1 голос
/ 12 июля 2011

Я пропустил omniauth, я использую 'net / ldap' напрямую. Плюсы и минусы принимаются: -)

...