私はこの質問に対する答えを読みました:
https://stackoverflow.com/questions/4102763/apache-basic-authentication-except-for-those-allowed
これにより、一部のユーザーを認証しない方法(IP による)を理解することができました。
<Directory /var/www/files/>
Order deny,allow
Deny from all
Allow from 192.168.1.2
Satisfy Any
AuthUserFile /etc/apache2/basic.pwd
AuthName "Please enter username and password"
AuthType Basic
Require valid-user
</Directory>
次のような DB (認証に使用される DB とは異なります) があるとします。
User IP
Mark 192.168.1.2
Mike 192.168.1.3
Karl 192.168.1.4
1- Apache の設定を使用して、DB に保存されているすべての IP アドレスを許可できますか?
2- 別の問題は、許可された IP の認証が失われることです。ユーザーが認証なしでページを取得できる場合、Apache はこの DB を認証に使用できますか?
アップデート:
明確に言うと:
1- 静的なソリューションは望んでいません。Apache が DB 内の指定されたテーブルからすべての IP を許可するようにしたいのです (DB は動的に変更されます)。
2- Apache がユーザーを認証するとき、認証資格情報からユーザー名がわかりますが、許可するとユーザー名が失われます。Apache が IP アドレスを抽出するのと同じテーブルから、許可する IP のユーザー名を抽出したいのですが。
答え1
提案された回答を試すことができますここmod_rewrite
ファイルからブラックリストに追加するために使用する方法:
## WHITELIST IPS ##
RewriteMap ipslist txt:/path/to/whitelist.txt
RewriteCond %{REMOTE_ADDR} ^(.*)$
RewriteCond ${ipslist:%1|black} ^black$ [NC]
RewriteRule (.*) - [F]
次のような動的なものを試すこともできますmod_authn_dbdデータベースからユーザー名とパスワードを選択するには:
# mod_dbd configuration
DBDriver pgsql
DBDParams "dbname=apacheauth user=apache password=xxxxxx"
DBDMin 4
DBDKeep 8
DBDMax 20
DBDExptime 300
<Directory /usr/www/myhost/private>
# core authentication and mod_auth_basic configuration
# for mod_authn_dbd
AuthType Basic
AuthName "My Server"
AuthBasicProvider dbd
# core authorization configuration
Require valid-user
# mod_authn_dbd SQL query to authenticate a user
AuthDBDUserPWQuery \
"SELECT password FROM authn WHERE user = %s"
</Directory>
答え2
1 番の回答では、必要な数の IP を許可できます...例:
Allow from 192.168.1.2
Allow from 192.168.1.3
Allow from 192.168.1.4
あるいは
Allow from 192.168.1.2 192.168.1.3 192.168.1.4
その他、範囲を含む多数の項目があります。
2 番目については、申し訳ありませんが、何を尋ねているのか分かりません。例を挙げていただけますか?