首页 文章

Rails - 在对OpenLDAP服务器进行身份验证后确定组成员身份

提问于
浏览
3

我正在维护一个使用Devise LDAP进行身份验证的Rails应用程序 . 我正在从Active Directory迁移到OpenLDAP,我已经设置了相同的结构 . 在安装Ubuntu Client 12.04 64位时,使用 apt-get 软件包 slapdldap-utils 安装了OpenLdap .

我可以对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
...

有人知道为什么 ldapsearch 可能会向Devise返回不同的结果吗?有人知道如何返回memberOf属性吗?

提前致谢

与ldap身份验证相关的宝石是(从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)

2 回答

  • 2

    a)你试过用吗?

    设计:: LdapAdapter.get_groups(电子邮件)

    b)你看过/config/ldap.yml

    那里有一些配置参数(如required_groups,require_attribute,check_group_membership) . 可能它只是被配置为忽略memberOf

    你可以看看here中是如何使用它们的 .

  • 0

    如果您正在使用devise ldap插件,请使用此方法

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

    如果user1存在于grp1中,则返回true

相关问题