我的第一次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并失败。这是另一个脑死亡的事情,因为它完全配置了!
答案 0 :(得分:1)
我跳过了omniauth,我直接使用'net / ldap'。接受的利弊: - )