我的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)中捕获流量。成功绑定正确地将电子邮件地址作为bindRequest
(LDAPMessage bindRequest(1) "me@example.com" simple
)的一部分发送,但Rails应用中的bindRequest
看起来像LDAPMessage bindRequest(1) "<ROOT>" simple
是否有人能够发现我的配置存在明显问题?任何人都可以将我的ldapsearch
命令转换为正确的YAML配置吗?
答案 0 :(得分:2)
之前我曾使用过这个Devise.rb
配置选项,但必须做错了。
将以下内容添加到Devise.rb
似乎解决了我的绑定问题:
config.ldap_auth_username_builder = Proc.new() { |attribute, login, ldap| login }