根据多个 LDAP 组对 Apache 进行身份验证

根据多个 LDAP 组对 Apache 进行身份验证

我正在针对 Apache/2.2.14(Ubuntu)使用 mod_authn_alias 和 mod_authnz_ldap,并且尝试针对多个域配置 ldap 身份验证。

我的配置是:

<AuthnProviderAlias ldap alpha>
  AuthLDAPBindDN "CN=admin-alpha,CN=Users,DC=alpha,DC=local"
  AuthLDAPBindPassword "xxx"
  AuthLDAPURL "ldap://dc01.alpha.local/CN=Users,DC=alpha,DC=local?sAMAccountName?sub?(objectClass=*)"
</AuthnProviderAlias>

<AuthnProviderAlias ldap beta>
  AuthLDAPBindDN "CN=admin-beta,CN=Users,DC=beta,DC=local"
  AuthLDAPBindPassword "xxx"
  AuthLDAPURL "ldap://dc01.beta.local/CN=Users,DC=test,DC=local?sAMAccountName?sub?(objectClass=*)"
</AuthnProviderAlias>

<Directory "/usr/local/nagios/addons/pnp/share">
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthName "Pnp Access"
        AuthType Basic
        AuthBasicProvider alpha beta
        AuthzLDAPAuthoritative off
        #Important, otherwise "(9)Bad file descriptor: Could not open password file: (null)"
        AuthUserFile /dev/null
        #only members of this group can log in
        Require ldap-group CN=grp_nagiosadmins,DC=beta,DC=local
        Require ldap-group CN=grp_nagiosadmins,DC=alpha,DC=local
        ...
</Directory>

因此,如果用户无法通过 alpha 域的身份验证,则应故障转移到 beta 域。但是,使用此配置无法对来自这两个域的用户进行身份验证。

当我尝试登录时:

[Fri Mar 07 16:13:35 2014] [error] [client 10.100.13.30] access to /pnp failed, reason: require directives present and no Authoritative handler.
[Fri Mar 07 16:13:38 2014] [error] [client 10.100.13.30] access to /pnp failed, reason: require directives present and no Authoritative handler.

为什么不把所有用户都放在一个域中?说来话长,最终这不是我的决定。

我该如何正确配置它?

答案1

我遇到了类似的问题,只不过我验证的是特定的 LDAP 用户而不是组。解决方案是更改要求指令来自ldap 用户只是用户。这记录在mod_authn_alias 文档的评论部分

我的理解是mod_authn_alias并非特定于 LDAP。其文档称其“允许扩展身份验证提供程序”,并且这些提供程序不一定与 LDAP 相关。

也许值得尝试更换你的需要 ldap 组指令需要组注意字母的大小写。

答案2

错误是关于

AuthzLDAPAuthoritative on

缺失。也就是说,如果您想设置多个规则,您必须配置:

Satisfy any

答案3

错误信息显示:require directives present and no Authoritative handler. 那么,如果你设置的话,它会起作用吗AuthzLDAPAuthoritative on

相关内容