ruby-on-rails-3 – Rails 3&devise_ldap_authenticatabl
我成功地将我的Rails 3应用程序与devise和devise_ldap_authenticatable一起运行,以针对本地Active Directory进行身份验证.
现在我想添加授权功能,以便只允许访问属于某些AD组的AD用户. 所以要简单的开始,我首先在AD中使用linux命令ldapsearch查找自己的用户.结果包含像… (...) memberOf: CN=my,OU=foo,DC=bar,DC=role,DC=domain,DC=com memberOf: CN=my,DC=bar2,DC=com memberOf: (...) (...) 好的,现在我决定,我想限制访问CN = my,OU = foo,DC = bar,DC = role,DC = domain,DC = com的成员. 所以,我改变了我的ldap.yml包含: authorizations: &AUTHORIZATIONS group_base: ou=role,dc=domain,dc=com required_groups: - CN=my,DC=com development: (...) <<: *AUTHORIZATIONS 另外改变了我的devise.rb包含: Devise.setup do |config| config.ldap_logger = true config.ldap_create_user = true config.ldap_update_password = false config.ldap_check_group_membership = true # <-- activated this line config.ldap_use_admin_to_bind = true #config.ldap_ad_group_check = true <-- don't know what this is good for 现在,当试图进行身份验证时,访问被拒绝,我没有想到: User CN=myuser,OU=org,DC=com is not in group: CN=my,DC=com 任何想法,如何使用devise_ldap_authenticatable完成对AD的授权?该模块的文档在授权方面还不是很全面. 解决方法
注意:代表OP(
@kwirschau)添加答案
>更改devise.rb以激活属性ldap_check_attributes,并删除/注释掉ldap_check_group,因为它不检查AD特定的属性memberOf 总而言之,问题示例中的设置如下所示: # devise.rb Devise.setup do |config| # [ ... ] config.ldap_check_attributes = true # [ ... ] end 和 # ldap.yml # [ ... ] authorizations: &AUTHORIZATIONS #group_base: ou=role,dc=com #required_groups: # - CN=my,DC=com require_attribute: memberOf: CN=my,DC=com # [ ... ] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |