許可されたユーザーに対する Apache 認証?

許可されたユーザーに対する Apache 認証?

私はこの質問に対する答えを読みました:

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 番目については、申し訳ありませんが、何を尋ねているのか分かりません。例を挙げていただけますか?

関連情報