Apache2 - 定義兩個工作驗證提供者

Apache2 - 定義兩個工作驗證提供者

我想在我的 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

相關內容