gpt4 book ai didi

ruby-on-rails-3 - Rails 3 & devise_ldap_authenticable : Authorization against Active Directory?

转载 作者:行者123 更新时间:2023-12-03 23:51:13 24 4
gpt4 key购买 nike

我成功地让我的 Rails 3 应用程序使用 devise 和 devise_ldap_authenticable 运行,以针对本地 Active Directory 进行身份验证。

现在我想添加授权功能,以便只允许属于某些 AD 组的 AD 用户访问。

因此,首先,我首先使用 linux 命令 ldapsearch 在 AD 中查找我自己的用户。结果包含类似...

(...)
memberOf: CN=my,OU=foo,DC=bar,DC=role,DC=domain,DC=com
memberOf: CN=my,OU=foo,DC=bar2,DC=role,DC=domain,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,OU=foo,DC=bar,DC=role,DC=domain,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=domain,DC=com is not in group: CN=my,OU=foo,DC=bar,DC=role,DC=domain,DC=com

任何想法,如何使用 devise_ldap_authenticable 完成对 AD 的授权?在授权方面,该模块的文档还不够全面。

最佳答案

注:代表 OP 添加答案 (@kwirschau)

  • 更改devise.rb激活属性 ldap_check_attributes并删除/注释掉 ldap_check_group因为它不检查 AD 特定属性 memberOf
  • 更改ldap.yml并注释掉 group_baserequired_groups .将所需的组成员身份添加到 require_attribute .

  • 总之,问题中示例的设置如下所示:
    # devise.rb

    Devise.setup do |config|
    # [ ... ]
    config.ldap_check_attributes = true
    # [ ... ]
    end


    # ldap.yml

    # [ ... ]
    authorizations: &AUTHORIZATIONS
    #group_base: ou=role,dc=domain,dc=com
    #required_groups:
    # - CN=my,OU=foo,DC=bar,DC=role,DC=domain,DC=com
    require_attribute:
    memberOf: CN=my,OU=foo,DC=bar,DC=role,DC=domain,DC=com
    # [ ... ]

    关于ruby-on-rails-3 - Rails 3 & devise_ldap_authenticable : Authorization against Active Directory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9229308/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com