Ruby 在rails Desive ldap gem中检查组成员身份,是否在yaml中?

Ruby 在rails Desive ldap gem中检查组成员身份,是否在yaml中?,ruby,ruby-on-rails-3,devise,ldap,Ruby,Ruby On Rails 3,Devise,Ldap,我是否应该使用ldap.yml文件来确保使用ldap进行身份验证的人拥有允许他们进入的正确组 我不是一个广告专业人士,这让我很困惑…什么是群体和属性。据我所知。我们在广告中有一个用户,他们有一个samAccount名称,我可以让他们进入应用程序,但现在它不关心他们的组是什么。这是一个专门的应用程序,实际上是那些具有memberOf属性的应用程序: HD Admin HD Helper HD Reset Security 如果允许所有人进入应用程序,我还(在使用apache directory

我是否应该使用ldap.yml文件来确保使用ldap进行身份验证的人拥有允许他们进入的正确组

我不是一个广告专业人士,这让我很困惑…什么是群体和属性。据我所知。我们在广告中有一个用户,他们有一个samAccount名称,我可以让他们进入应用程序,但现在它不关心他们的组是什么。这是一个专门的应用程序,实际上是那些具有memberOf属性的应用程序:

HD Admin
HD Helper
HD Reset
Security
如果允许所有人进入应用程序,我还(在使用apache directory studio之后)意识到有许多memberOf条目:

memberOf CN=Security,OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu

memberOf CN=HD Admin, OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu
例如,Bob可能有两个memberOf条目:

memberOf CN=Security,OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu

memberOf CN=HD Admin, OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu
那么,我的yaml看起来怎么样?这是做这些事情的正确地点吗

authorizations: &AUTHORIZATIONS
 group_base: OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=nmsu,DC=edu
  ## Requires config.ldap_check_group_membership in devise.rb be true
  # Can have multiple values, must match all to be authorized
  required_groups:
  # If only a group name is given, membership will be checked against "uniqueMember"
   - CN=HD Admin
   - CN=HD Reset
   - CN=Security
  # If an array is given, the first element will be the attribute to check against, the second the group name
   - ["memberOf", " CN=HD Admin,OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu"]
   - ["memberOf", " CN=HD Helper,OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu"]
   - ["memberOf", " CN=HD Reset,OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu"]
   - ["memberOf", " CN=Security,OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu"]

 require_attribute:
    memberOf: HD Admin
我无法获得所需的属性来工作,所以我是否偏离了基准?在从ldap Desive gem构建的Desive脚手架中是否有这样做的方法?因为事实上,他们可以是这些群体中的任何一个,这样他们就不必加入应用程序

至少yaml是不是尝试这个的地方? 更新:

我确实尝试过上面提到的数组,并且
config.ldap\u check\u group\u membership=true而且无论现在发生什么,它都不允许我进入,所以它要么是全部,要么是全部。甚至把所有的数组成员都降到了一个我知道我的测试用户有,但它仍然不让我进去

我还想问,我是否应该继续进行以下开发:编写并处理代码中角色的所有检查(是否有关于如何执行的链接),也许我猜是一个api文档(可能在github上的某个地方),虽然手工编写所有检查代码可能会更容易……但这意味着我也必须对Desive更加熟悉

我应该添加ldap.yml的其余部分,这很重要:

development:
  host: directory.ldapstuff.com
  port: 636
  attribute: sAMAccountName
  base: OU=Main Users, OU=Accounts, DC=ACN, DC=ad, DC=tdsu, DC=edu
  admin_user: CN=EASApps, OU=LDAP, OU=Service Accounts, DC=ACN, DC=ad, DC=tdsu, DC=edu
  admin_password: asfssfaf
  ssl: true
  # <<: *AUTHORIZATIONS
开发:
主机:directory.ldapstuff.com
港口:636
属性:sAMAccountName
基础:OU=主要用户,OU=账户,DC=ACN,DC=ad,DC=tdsu,DC=edu
管理员用户:CN=EASApps,OU=LDAP,OU=Service Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu
管理员密码:asfssfaf
ssl:true

#我认为您只需要取消对
旧问题的注释,但是如果您仍然存在此问题,您还可以尝试在
design.rb
配置文件中启用
ldap\u ad\u group\u check

# devise.rb

...
config.ldap_check_group_membership = true
config.ldap_ad_group_check = true
...

我也遇到了同样的问题,这对我很有帮助。

啊,这确实起到了作用,尽管我仍然有“或”的问题,但我不知道如何判断他们是这个团体、那个团体还是那个团体的成员。在Desive中可能不可行?您的配置文件看起来与我自己(未成功)尝试使用
require\u groups
时所做的类似,并在执行时检查
memberOf
属性。最后,我能够从
require\u属性
范围中获得我需要的东西。我发现很难看到LDAP请求是如何形成的,所以我使用Wireshark直接查看数据包,并从那里向后工作。