You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单个Kerberos主体访问两个不同LDAP RootDN

单个Kerberos账号映射到两个LDAP RootDN的GSSAPI认证解决方案

问题背景

现有两个LDAP RootDN:

  • cn=admin,cn=config
  • cn=admin,dc=example,dc=com

目标是通过单个Kerberos账号ldap/admin获取票据后,使用GSSAPI认证分别访问这两个RootDN,对应的客户端命令为:

ldapsearch -D "cn=admin,cn=config" -W -Y GSSAPI
ldapsearch -D "cn=admin,dc=example,dc=com" -W -Y GSSAPI

已配置olcAuthzRegexp规则,但目前仅能访问其中一个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"

解决方案

核心思路

OpenLDAP默认olcAuthzPolicy为none,会忽略客户端指定的-D授权ID,仅使用olcAuthzRegexp匹配到的第一个DN。要实现同一个Kerberos主体切换不同授权DN,可通过authzTo属性结合olcAuthzPolicy配置实现,无需修改访问控制列表。

步骤1:修改授权策略配置

在cn=config条目下添加或更新olcAuthzPolicy,允许客户端指定授权ID:

olcAuthzPolicy: to

步骤2:为两个RootDN添加authzTo属性

分别为两个RootDN添加authzTo属性,授权Kerberos主体的SASL身份使用该DN:

  1. 修改cn=admin,cn=config:
    ldapmodify -Y GSSAPI <<EOF
    dn: cn=admin,cn=config
    changetype: modify
    add: authzTo
    authzTo: uid=ldap/admin,cn=example.com,cn=gssapi,cn=auth
    EOF
    
  2. 修改cn=admin,dc=example,dc=com:
    ldapmodify -Y GSSAPI <<EOF
    dn: cn=admin,dc=example,dc=com
    changetype: modify
    add: authzTo
    authzTo: uid=ldap/admin,cn=example.com,cn=gssapi,cn=auth
    EOF
    

步骤3:验证配置

获取Kerberos票据后,执行客户端命令验证:

# 以cn=admin,cn=config身份访问
ldapsearch -D "cn=admin,cn=config" -Y GSSAPI

# 以cn=admin,dc=example,dc=com身份访问
ldapsearch -D "cn=admin,dc=example,dc=com" -Y GSSAPI

说明

  • olcAuthzPolicy: to 允许客户端通过-D参数指定授权DN,只要该DN的authzTo属性包含认证后的SASL身份。
  • 无需修改olcAccess规则,两个RootDN本身已拥有最高权限,authzTo仅控制身份切换的权限。

内容的提问来源于stack exchange,提问作者Ichigo Kurosaki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:53:12