如何解决使用omniauth和LDAP失败后无法登录
| 我的第一个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=Secret\'\\,:uid => \'uid\'\\,:bind_dn => \'cn=nss,: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重新绑定,但失败。这是另一回事,因为它的配置完全不正确!
解决方法
我跳过了omniauth,直接使用\'net / ldap \'。接受利弊:-)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。