我想在 LDAP 中将用户分组到项目用户中。假设有用户 1、用户 2、用户 3,每个用户都有一个密码和 ssh 密钥。我想将他们分组到项目 1、项目 2 中。
鉴于 user1 是 group project1 的成员,他应该能够使用用户名 project1 和密码/ssh-key 进行身份验证。
使用 LDAP 可以实现这一点吗?如果可以,您能否提供一些如何实现这一点的提示?
答案1
据我所知,标准 LDAP 方法不行。无论如何,这种方法都相当低效,因为 LDAP 需要根据 group1 中的任何成员检查密码是否有效。
理论上,当您编写自己的身份验证系统(例如具有此功能的新 LDAP PAM 插件)时可以做到这一点,但这会带来很多问题,最突出的是两个用户之间密码相同的情况:您以哪一个用户的身份进行身份验证?
您想这样做有什么特别的原因吗?
答案2
好的,所以您可以对每项服务使用一个组策略。但是,如果不对每项服务进行自定义,则很难将单个组应用于每项服务中的项目。例如,您可以为每个服务、SSH、Build Machine、SVN 等定义单独的组。例如,如果您希望只有源代码控制组中的用户才能访问 SVN,您可以在相应的 Apache 虚拟主机中指定以下 URL:
<AuthnProviderAlias ldap ldap-users>
AuthLDAPUrl "ldaps://myldapserver:636/DC=mydomain,DC=local?sAMAccountName?sub?(&(objectCategory=person)(memberOf=CN=source-control,CN=Users,DC=mydomain,DC=local))" "SSL"
但是,您必须使用其已知的管理功能深入到服务级别。以 SVN 为例:
[groups]
project1_team = dave, john, andy
[/]
* =
dave = rw
[/project1]
@project1_team = rw
[/project2]
andy = r
答案3
您需要 SASL 代理授权(OpenLDAP 文档)。它本质上su
适用于 OpenLDAP。
但是,它无法与 ssh-keys 配合使用,因为 SASL 无法理解它们。