我的第一個omniauth實驗有一個神祕的問題。我可以使用我的用戶名和密碼登錄,並且可以正常註銷。我可以多次重複,但是一旦我輸入了錯誤的密碼,即使我嘗試了不同的用戶,我也無法再次登錄。我得到"message"=>"invalid_credentials"
。如果我重新啓動我的應用程序(直到我輸錯密碼),一切都很好。如預期使用omniauth和LDAP失敗後無法登錄
它與給定: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
其與綁定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。我使用JRuby 1.5.1,Ruby 1.8.7,Rails 3.0.7,omniauth 0.2.6。我使用JRuby 1.5.1,Ruby 1.8.7,Rails 3.0.7,omniauth 0.2.6。
UPDATE
如果我重新配置(....使用OmniAuth ::策略:: LDAP ...)每次失敗後話,我可以用它來成功登錄。我相信我已經完成了一秒,然後出現了新的問題。 成功登錄和註銷即使我在成功驗證後重做配置,我也無法使用其他用戶登錄。
在選項中給出的bind_dn是一個服務帳戶。 Omniauth使用該帳戶綁定到LDAP服務器,並使用給定的憑據進行搜索(比如'user1'),它會查找結果並與搜索結果的uid綁定。
在下次登錄嘗試時(使用user2),根據配置執行LDAP搜索而不重新綁定。這是一件需要做的事情。用戶1不是服務帳戶,所以搜索沒有找到任何結果。然後它嘗試使用憑證的用戶名作爲bind_dn重新綁定並失敗。這是另一個讓人頭痛的事情,因爲它被完全配置!
我跳過了omniauth,我直接使用'net/ldap'。贊成和反對接受:-) – Notinlist 2011-06-24 11:39:24
您是否嘗試在Devise中使用'net/ldap'? – 2011-09-08 08:58:03
@Bregor還沒有試過設計。爲了編寫認證已經達到了最後期限,另一個實驗不適合。我在一天內編寫了「net/ldap」的直接使用(測試)。正如時間證明的那樣,我們實際上並不需要其他類型的驗證。 – Notinlist 2011-09-08 14:08:36