0

我的 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_authenticable 配置有问题,如下所示:

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) 的一部分发送,但bindRequest来自 Rails 应用程序的看起来像LDAPMessage bindRequest(1) "<ROOT>" simple

有人能发现我的配置存在明显问题吗?谁能将我的ldapsearch命令翻译成正确的 YAML 配置?

4

1 回答 1

2

我以前玩过这个Devise.rb配置选项,但肯定做错了什么。

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

config.ldap_auth_username_builder = Proc.new() { |attribute, login, ldap| login }
于 2013-07-02T11:50:37.043 回答