Apache 2.4 对匿名用户进行身份验证,但允许其他人通过 IP

Apache 2.4 对匿名用户进行身份验证,但允许其他人通过 IP

我正在尝试配置 Apache,以允许来自选定 IP 的用户无需身份验证即可访问 Flask 应用程序,但会质询任何其他用户的凭据。

目前情况我有以下配置:

<directory /var/www/flaskapp>
    WSGIProcessGroup flaskapp
    WSGIApplicationGroup %{GLOBAL}
    WSGIScriptReloading On
    WSGIPassAuthorization On
    Order deny,allow
    AuthType Basic
    AuthName "Restricted area - authorised users only"
    AuthUserFile "/usr/local/apache/passwd"
    <RequireAll>
        <RequireAny>
            Require ip 1.1.1.1
         </RequireAny>
        Require valid-user
    </RequireAll>
</directory>

这不起作用,而是提示所有用户进行身份验证。

我应该提到我已经在配置中指示的htpasswd位置创建了一个用户文件。/usr/local/apache/passwd

答案1

你只需要RequireAny健康)状况:

<RequireAny> 和 </RequireAny> 用于包含一组授权指令,其中一个指令必须成功,<RequireAny> 指令才能成功。

<RequireAny>
    Require ip 1.1.1.1
    Require valid-user
</RequireAny>

答案2

由于您正在运行 Apache 2.4,因此您可以使用表达式. 在你的情况下将是:

<If "%{REMOTE_ADDR} != '127.0.0.1'">
  AuthType Basic
  AuthName "Restricted area - authorised users only"
  AuthUserFile usr/local/apache/passwd
  require valid-user
</If>

还支持 CIDR 表示法。例如:

<If "%{REMOTE_ADDR} != '192.168.0.0/24'">
  AuthType Basic
  AuthName "Restricted area - authorised users only"
  AuthUserFile usr/local/apache/passwd
  require valid-user
</If>

相关内容