使用omniauth和LDAP失败后无法登录

时间:2011-06-14 15:12:36

标签: ruby-on-rails-3 ldap omniauth

我的第一次omniauth实验有一个神秘的问题。我可以使用我的用户名和密码登录,我可以正常注销。我可以重复多次,但是在我输入错误的密码之后,即使我尝试不同的用户,我仍然无法再次登录。我得到"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

我使用以下配置(config/initializers/omniauth.rb)跟踪Railscast#241 http://railscasts.com/episodes/241-simple-omniauth

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。

更新

如果我在每次失败后重做配置(....使用OmniAuth :: Strategies :: LDAP ...),那么我可以使用它成功登录。我相信我做了一秒钟然后出现了新问题。 成功登录和注销后,即使我在成功验证后重做配置,也无法使用其他用户登录。

选项中给出的bind_dn是一个服务帐户。 Omniauth使用该帐户绑定到LDAP服务器并使用给定的凭据进行搜索(假设为'user1'),它会找到结果并与搜索结果的uid绑定。

在下次登录尝试时(使用user2),将执行LDAP搜索,而不根据配置进行重新绑定。这是一个脑死亡的事情。 User1不是服务帐户,因此搜索未找到任何结果。然后它尝试使用凭据的用户名重新绑定为bind_dn并失败。这是另一个脑死亡的事情,因为它完全配置了!

1 个答案:

答案 0 :(得分:1)

我跳过了omniauth,我直接使用'net / ldap'。接受的利弊: - )

相关问题