检查 rails 中的组成员身份设计 ldap gem,是否在 yaml 中?

Cod*_*joy 5 ruby ldap devise ruby-on-rails-3

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

我无论如何都不是 AD 专业人士,这让我很困惑……什么是组和属性。据我了解。我们在 AD 中有一个用户,他们有一个 samAccount 名称,我可以让他们进入应用程序,但此时它并不关心他们的组是什么。它是一个专门的应用程序,实际上是那些具有以下成员属性的应用程序:

HD Admin
HD Helper
HD Reset
Security
Run Code Online (Sandbox Code Playgroud)

应该都被允许进入应用程序,我也(在使用 apache directory studio 之后)意识到有很多 memberOf 条目:

例如,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
Run Code Online (Sandbox Code Playgroud)

那么我的 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
Run Code Online (Sandbox Code Playgroud)

我无法获得所需的属性,所以我偏离了基地吗?在从 ldap devise gem 构建的设计脚手架中,有什么方法可以做到这一点吗?因为他们真的可以是这些组中的任何一个,所以他们不必全部加入应用程序。

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

我确实用我上面提到的数组尝试过它,config.ldap_check_group_membership = true; 无论现在怎样它都不让我进入,所以它要么全部要么全无。甚至将所有 memberOf 数组缩减为一个我知道我的测试用户拥有的数组,但它仍然不让我进入。

我还想问一下,我是否应该保持以下开发:行并处理代码中的所有角色检查(并且是否有任何关于如何执行此操作的链接),也许我猜是一个 api 文档(可能在 github 上)某处),尽管手动编码所有检查等可能更容易......意味着我也必须更加熟悉设计。

我应该添加我的 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
Run Code Online (Sandbox Code Playgroud)

And*_*ion 3

我认为你只需要取消注释# <<: *AUTHORIZATIONS合并即可。