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>
したがって、次のいずれかが当てはまる場合、ユーザーは認証されます。
- ユーザーは有効であり、適切な LDAP グループ メンバーシップを持っています。この場合、ユーザーはバック
ldap
エンドによって認証されている必要があります。 - ユーザーの属性
uid
が指定されたユーザー名と一致しませんが、ユーザーは有効です。これは、uid
属性が存在しない場合にのみ発生しますが、属性が存在する場合は、ldap
プロバイダーが LDAP データベースでユーザーを見つけることができませんでした。したがって、この場合、ユーザー資格情報の有効性はプロバイダーによって決定されていますfile
。