Apache2 - 定义两个有效的 Auth 提供程序

Apache2 - 定义两个有效的 Auth 提供程序

我想在我的 apache2 .htaccess 中定义两个不同的身份验证提供程序,以防其中一个失败(所需的是 ldap,但我希望即使 ldap 通过本地 htpasswd 文件失败也能登录)

我试过但我无法让它工作,因为 apache 抱怨已经定义的身份验证类型。

如果我在 site.conf 中定义了两种身份验证类型,我将无法通过本地 htpasswd 文件登录,因为“Require”行确保正确的 ldap 组和本地文件无法处理该规则,因为它只需要Require valid-user

          Require ldap-group CN=admins,OU=Groups,OU=main,DC=my,DC=tld

答案1

如果您同时提供了fileldap身份验证提供程序(使用AuthBasicProvider ldap file指令),那么您可以定义以下规则集以便能够从两者进行身份验证。我假设您使用属性uid作为用户名,但如果没有,重写下面的条件应该不会太难。

<RequireAny>
    <RequireAll>
        Require valid-user
        Require ldap-group cn=admins,ou=groups,out=main,dc=my=dc=tld
    </RequireAll>
    <RequireAll>
        Require valid-user
        Require not ldap-attribute uid="%{REMOTE_USER}"
    </RequireAll>
</RequireAny>

因此,只要以下任一情况成立,则用户已通过身份验证:

  1. 用户有效且具有正确的 LDAP 组成员身份。在这种情况下,用户必须已通过后端的身份验证ldap
  2. 用户的属性uid与给定的用户名不匹配,但用户有效。只有当属性uid不存在时才会发生这种情况,但如果属性不存在,则ldap提供程序无法在 LDAP 数据库中找到用户。因此在这种情况下,用户凭据的有效性已由提供程序确定file

相关内容