Apache2 - 2つの有効な認証プロバイダを定義する

Apache2 - 2つの有効な認証プロバイダを定義する

1 つの認証プロバイダが失敗した場合に備えて、apache2 .htaccess に 2 つの異なる認証プロバイダを定義したい (必要なのは ldap ですが、ldap が失敗した場合でもローカル htpasswd ファイル経由でログインできるようにしたい)

私は試したこれしかし、Apache が既に定義されている認証タイプについてエラーを出すため、動作させることができません。

site.conf 内で両方の認証タイプを定義した場合、正しい LDAP グループを保証する "Require" 行と、ローカル ファイルで必要なのは . のみであるためそのルールを処理できないため、ローカル htpasswd ファイル経由でログインできませんRequire valid-user

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

答え1

file認証プロバイダーと認証プロバイダーの両方を指定した場合ldap(ディレクティブを使用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

関連情報