Apache-2.4

Apache2 - 定義兩個有效的身份驗證提供程序

  • January 8, 2021

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

如果您同時提供了 thefileldap身份驗證提供程序(使用該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提供商確定。

引用自:https://serverfault.com/questions/1049066