我是否应该使用 ldap.yml 文件来确保使用 ldap 进行身份验证的人分配了正确的组以允许他们进入?
无论如何,我都不是 AD 专业人士,这让我感到困惑……什么是组和属性。据我了解。我们在 AD 中有一个用户,他们有一个 samAccount 名称,我可以让他们进入应用程序,但此时它并不关心他们的组是什么。它是一个专门的应用程序,实际上是那些具有 memberOf 属性的应用程序:
HD Admin
HD Helper
HD Reset
Security
应该都被允许进入应用程序,我也(在使用 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
那么我的 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 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