作为管理员,我最近一直在尝试使用一个 kerberos 帐户登录 2 个不同的 RootDN 帐户。
-D "cn=admin,cn=config"
-D "cn=admin,dc=example,dc=com"
当我像这样通过 Kerberos 登录时;
kinit ldap/admin
我想同时使用“ldap/admin”主体;
-D "cn=admin,cn=config" -W -Y GSSAPI
-D "cn=admin,dc=example,dc=com" -W -Y GSSAPI
我已经应用了相关命令来实现,但是我只能访问一个ROOTDN,但是我想对两个都进行操作。如果没有 olcAccess,我怎么能做到这一点?
olcAuthzRegexp: {0}"uid=ldap/admin,cn=example.com,cn=gssapi,cn=auth" "cn=admin,dc=example,dc=com'
olcAuthzRegexp: {1}"uid=ldap/admin,cn=example.com,cn=gssapi,cn=auth" "cn=admin,cn=config'
我尝试使用单一主体访问两个不同的 RootDN
-D
和 -W
选项仅适用于简单绑定。对于SASL绑定,需要使用-X
指定SASL“授权身份”:
$ ldapwhoami -Y GSSAPI -X "dn:cn=admin,cn=config"
但是,
olcAuthzRegexp
只定义了default authzid(即正则表达式用于 authnid 到 authzid 的转换)而不是你想要的-X
.
为了允许指定自定义身份,我相信您需要在您自己的 authnid 条目上结合使用
olcAuthzPolicy
和 authzTo
,在您打算模拟的条目上结合使用 or authzFrom
。 (是的,rootDN 可以有一个实际条目。)
例如,对于
olcAuthzPolicy: any
,条目需要有:
dn: cn=admin,dc=example,dc=com
authzFrom: {0}dn.exact="uid=ldap/admin,cn=example.com,cn=gssapi,cn=auth"
如果您无法在
cn=admin,cn=config
创建一个真实的条目(配置后端很可能不支持这个),您将需要使用与 authzTo
相反的方法:
定义
olcAuthzRegexp
将您的“cn=gssapi,cn=auth”DN映射到one存在于主数据库后端的真实DN:
olcAuthzRegexp: {0}"uid=ldap/admin,cn=example.com,cn=gssapi,cn=auth" "cn=admin,dc=example,dc=com"
验证默认情况下您的连接是否被授权为此 DN:
$ ldapwhoami -Y GSSAPI
dn:cn=admin,dc=example,dc=com
实际创建 DN,其
authzTo
属性列出允许它模拟的 DN(授权为):
dn: cn=admin,dc=example,dc=com
authzTo: {0}dn.exact="cn=admin,cn=config"
将
olcAuthzPolicy
设置为both
或from
,然后使用-X
选项指定您想要假定的DN:
$ ldapwhoami -Y GSSAPI -X "dn:cn=admin,cn=config"
dn:cn=admin,cn=config