2011-06-14 52 views
1

我的第一個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重新綁定並失敗。這是另一個讓人頭痛的事情,因爲它被完全配置!

+0

我跳過了omniauth,我直接使用'net/ldap'。贊成和反對接受:-) – Notinlist 2011-06-24 11:39:24

+0

您是否嘗試在Devise中使用'net/ldap'? – 2011-09-08 08:58:03

+0

@Bregor還沒有試過設計。爲了編寫認證已經達到了最後期限,另一個實驗不適合。我在一天內編寫了「net/ldap」的直接使用(測試)。正如時間證明的那樣,我們實際上並不需要其他類型的驗證。 – Notinlist 2011-09-08 14:08:36

回答

1

我跳過了omniauth,我直接使用'net/ldap'。優點和缺點接受:-)

相關問題