3

認証に Devise LDAP を使用する Rails アプリを維持しています。Active Directory から、同じ構造でセットアップした OpenLDAP に移行しています。OpenLdap は、apt-getパッケージslapdを使用してldap-utils、Ubuntu クライアント 12.04 64 ビットのインストール時にインストールされました。

OpenLdapに対して認証できますが、呼び出すと

Devise::LdapAdapter.get_ldap_entry(email)["memberOf"]

空の配列を返しています。Rails コンソールで、返された LDAP エントリに " " エントリがないことがわかりますmemberOf

端末から LDAP サーバーにクエリを実行すると、次の出力が表示されます。

ldapsearch -H ldapi:/// -x -b "cn=people,dc=example,dc=local" memberOf 

...

# fred fred, people, example.local
dn: cn=fred fred,cn=people,dc=example,dc=local
memberOf: cn=Authorisers,ou=example,dc=example,dc=local
...

Deviseに異なる結果を返す理由をldapsearch知っている人はいますか?また、 memberOf 属性を返す方法を知っている人はいますか?

前もって感謝します

LDAP 認証に関連する gem は (Bundle からの出力)

Using devise (2.1.2) 
Using net-ldap (0.2.2) 
Using devise_ldap_authenticatable (0.6.1) 
Using activesupport (3.2.9) 
Using activemodel (3.2.9)  
Using sprockets (2.2.2) 
Using mail (2.4.4)  
Using activerecord (3.2.9) 
Using activeresource (3.2.9) 
4

2 に答える 2

2

a) 使用しようとしましたか

Devise::LdapAdapter.get_groups(メール)

b) /config/ldap.yml を見ましたか

そこにはいくつかの構成パラメーターがあります (required_groups、require_attribute、check_group_membership など)。memberOf を無視するように構成されているだけかもしれません

ここで、それらすべてがどのように使用されているかを見ることができます

于 2013-01-24T17:17:07.667 に答える
0

devise ldap プラグインを使用している場合は、これを使用します

connection = Devise::LDAP::Connection.new({:login="user1"}) connection.in_group?('cn=grp1,--')

user1 が grp1 に存在する場合は true を返します

于 2016-12-09T06:13:35.827 に答える