允許使用者的 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>

假設我有這個資料庫(與用於身份驗證的資料庫不同):

User        IP 
Mark        192.168.1.2
Mike        192.168.1.3
Karl        192.168.1.4

1- 我可以使用 Apache 中的配置允許儲存在資料庫中的所有 IP 位址嗎?

2-另一個問題是允許的IP的授權遺失,如果允許使用者無需身份驗證即可取得頁面,Apache可以使用此資料庫進行授權嗎?

更新:

需要明確的是:

1-我不需要靜態解決方案,我希望 Apache 允許資料庫中提到的表中的所有 IP(資料庫正在動態更改)。

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,抱歉,我不明白你在問什麼,也許是一個例子?

相關內容