正确配置devise_ldap_authenticatable

时间:2013-06-28 19:00:23

标签: ruby-on-rails devise ldap

我的Rails应用程序(使用Devise + Devise LDAP Authenticatable)和我尝试与之通信的Active Directory服务器存在连接问题。

我已经能够使用以下命令成功执行绑定并使用ldapsearch进行搜索:

ldapsearch -H ldap://ad.example.com:389 -b "ou=dept,ou=Users,ou=company,dc=example,dc=com" -D "me@example.com" -W "&(objectClass=organizationalPerson)(objectClass=Person))" mail

由于这有效,我假设我的devise_ldap_authenticatable配置存在问题,如下所示:

development: 
  host: ad.example.com
  port: 389
  attribute: mail
  base: ou=dept,ou=Users,ou=company,dc=example,dc=com
  objectClass: organizationalPerson
  objectClass: Person
  ssl: false

使用Wireshark我能够从成功的绑定/搜索(CLI)和失败的绑定/搜索(Rails)中捕获流量。成功绑定正确地将电子邮件地址作为bindRequestLDAPMessage bindRequest(1) "me@example.com" simple)的一部分发送,但Rails应用中的bindRequest看起来像LDAPMessage bindRequest(1) "<ROOT>" simple

是否有人能够发现我的配置存在明显问题?任何人都可以将我的ldapsearch命令转换为正确的YAML配置吗?

1 个答案:

答案 0 :(得分:2)

之前我曾使用过这个Devise.rb配置选项,但必须做错了。

将以下内容添加到Devise.rb似乎解决了我的绑定问题:

config.ldap_auth_username_builder = Proc.new() { |attribute, login, ldap| login }