У меня загадочная проблема с моим первым экспериментом со всевозможными истинами.Я могу войти под своим именем пользователя и паролем, и я могу выйти правильно.Я могу повторить это много раз, но после того, как однажды введу неправильный пароль, я никогда не смогу войти снова, даже если попробую другого пользователя.Я получаю "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, и завершается неудачно.Это еще одна мозговая вещь, которую нужно сделать, потому что она настроена совершенно иначе!