Ruby 在rails Desive ldap gem中检查组成员身份,是否在yaml中?
我是否应该使用ldap.yml文件来确保使用ldap进行身份验证的人拥有允许他们进入的正确组 我不是一个广告专业人士,这让我很困惑…什么是群体和属性。据我所知。我们在广告中有一个用户,他们有一个samAccount名称,我可以让他们进入应用程序,但现在它不关心他们的组是什么。这是一个专门的应用程序,实际上是那些具有memberOf属性的应用程序: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
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直接查看数据包,并从那里向后工作。