0

我正在尝试使用 net/ldap、devise 和 devise_ldap_authenticatable 为 ruby​​ on rails 应用程序实现身份验证(简单的“他是我们中的一员”)。

当我尝试登录时,弹出下面的错误消息,当我转到控制台并尝试使用相同的用户名/密码组合的 ldap.bind 时,它返回 false,但是 ldap.open 执行 |ldap| ; ldap.search (...) ; end 成功返回搜索。匿名绑定也返回 true,因此问题必须与 DN 有关。但是 DN 应该是正确的。通过打印语句调试,我发现我给出的确切输入(应该是正确的)通过 gems 传递到 ldap 服务器。我的想法不多了,有什么想法吗?

LDAP: Authorizing user uid=name,ou=People,dc=test,dc=com
LDAP: LDAP search: uid=name
Completed 500 Internal Server Error in 89ms
Net::LDAP::LdapError (Invalid binding information):
net-ldap (0.3.1) lib/net/ldap.rb:1230:in `bind_simple'
net-ldap (0.3.1) lib/net/ldap.rb:1209:in `bind'
net-ldap (0.3.1) lib/net/ldap.rb:718:in `bind'
devise_ldap_authenticatable (0.4.4) lib/devise_ldap_authenticatable
/ldap_adapter.rb:134:in `admin'
devise_ldap_authenticatable (0.4.4) lib/devise_ldap_authenticatable
/ldap_adapter.rb:107:in `has_required_attribute?'
devise_ldap_authenticatable (0.4.4) lib/devise_ldap_authenticatable
/ldap_adapter.rb:77:in `authorized?'
devise_ldap_authenticatable (0.4.4) lib/devise_ldap_authenticatable
/ldap_adapter.rb:14:in `valid_credentials?'
devise_ldap_authenticatable (0.4.4) lib/devise_ldap_authenticatable/model.rb:38:in `valid_ldap_authentication?'
activesupport (3.2.3) lib/active_support/core_ext/object/try.rb:32:in `try'
devise_ldap_authenticatable (0.4.4) lib/devise_ldap_authenticatable/model.rb:65:in 
authenticate_with_ldap'
devise_ldap_authenticatable (0.4.4) lib/devise_ldap_authenticatable/strategy.rb:16:in
authenticate!'
warden (1.2.1) lib/warden/strategies/base.rb:53:in `_run!'
warden (1.2.1) lib/warden/proxy.rb:354:in `block in _run_strategies_for'
warden (1.2.1) lib/warden/proxy.rb:349:in `each'
warden (1.2.1) lib/warden/proxy.rb:349:in `_run_strategies_for'
warden (1.2.1) lib/warden/proxy.rb:319:in `_perform_authentication'
warden (1.2.1) lib/warden/proxy.rb:127:in `authenticate!'
devise (2.1.2) app/controllers/devise/sessions_controller.rb:15:in `create'
4

1 回答 1

0

对于任何这些类型的问题,请尝试使用已知的良好工具,例如ldapsearch确定可分辨名称、凭据、基础对象等是否正确。

也可以看看

于 2012-10-16T13:26:43.070 回答