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

如何配置FreeRADIUS依次查询多个Base DN适配多域名Google Workspace?

配置FreeRADIUS多Base DN顺序查询Google Workspace用户

核心思路

Google Workspace LDAP不支持跨域根目录查询(你之前尝试DC=com失败正是这个原因),要实现“首个Base DN无结果时依次查询其他目录”,可以通过FreeRADIUS的多LDAP模块实例链式调用,或者动态切换Base DN的方式实现。

具体配置方案

方案1:多LDAP模块实例顺序执行

复制多份LDAP模块配置对应不同Base DN,在认证流程中按顺序调用,失败后继续尝试下一个实例。

  1. 编辑mods-available/ldap,添加多个模块实例:
# 实例1:对应example1.com
ldap ldap_example1 {
    server = "ldap.google.com"
    port = 636
    ssl = yes
    base_dn = "DC=example1,DC=com"
    userfilter = "(mail=%{%{Stripped-User-Name}:-%{User-Name}})"
    # 通用配置与现有实例保持一致
    bind_dn = "admin@example.com"
    bind_password = "your_bind_password"
}

# 实例2:对应example2.com
ldap ldap_example2 {
    server = "ldap.google.com"
    port = 636
    ssl = yes
    base_dn = "DC=example2,DC=com"
    userfilter = "(mail=%{%{Stripped-User-Name}:-%{User-Name}})"
    bind_dn = "admin@example.com"
    bind_password = "your_bind_password"
}

# 按需添加example3、example4的模块实例
  1. 编辑认证站点配置(如sites-available/default),在authorize段按顺序调用模块,设置fail=no允许失败后继续执行:
authorize {
    ldap_example1
    ldap_example2 fail=no
    ldap_example3 fail=no
    ldap_example4 fail=no
}

方案2:动态切换Base DN重试

保留单个LDAP模块,通过逻辑判断在查询失败时动态修改Base DN并重试。

  1. 保留基础LDAP模块配置(mods-available/ldap):
ldap {
    server = "ldap.google.com"
    port = 636
    ssl = yes
    base_dn = "DC=example1,DC=com"
    userfilter = "(mail=%{%{Stripped-User-Name}:-%{User-Name}})"
    bind_dn = "admin@example.com"
    bind_password = "your_bind_password"
}
  1. 在sites-available/default的authorize段添加重试逻辑:
authorize {
    # 首次查询默认Base DN
    ldap
    # 若返回用户未找到(LDAP错误码32),切换Base DN重试
    if (&control:LDAP-Result-Code == 32) {
        update control {
            LDAP-Base-DN := "DC=example2,DC=com"
        }
        ldap
        # 继续判断是否重试第三个Base DN
        if (&control:LDAP-Result-Code == 32) {
            update control {
                LDAP-Base-DN := "DC=example3,DC=com"
            }
            ldap
            # 第四个Base DN重试逻辑
            if (&control:LDAP-Result-Code == 32) {
                update control {
                    LDAP-Base-DN := "DC=example4,DC=com"
                }
                ldap
            }
        }
    }
}

注意事项

  • 确保绑定账号拥有所有目标Base DN的查询权限。
  • 优先以example1.com(用户别名所在域)作为第一查询目标,减少重试次数,避免触发Google Workspace LDAP的速率限制。
  • 调试时可启动FreeRADIUS调试模式(radiusd -X),查看各Base DN的查询过程与结果。

内容的提问来源于stack exchange,提问作者Evo Fearnley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:41:03