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 是否可以使用此 DB 进行授权?

更新:

要明确的是:

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_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,抱歉,但我不明白你在问什么,也许可以举个例子?

相关内容