Apache基本身份验证:仅在先前进行身份验证时才跳过对特定模式的身份验证

时间:2018-04-17 18:27:35

标签: apache

我编写了一个角度应用程序,它与使用Apache提供页面的第三方后端服务器配合使用。我的许多用户都在Apache中启用基本身份验证。服务器的一个功能是发送使用<img src>标签在浏览器上呈现的MJPEG图像流。浏览器不允许在图片代码中插入Authorization标题(我知道有客户端plugins尝试这样做,但为了不离题,他们不会这样做。为MJPEG图像流工作,所以我们假设这不是讨论的事情,以保持简单:))。

所以这是我在apache配置中需要做的事情:

  1. 为我的主要门户启用基本身份验证,即/zm
  2. 禁用具有/zm?view=image&<whatever>
  3. 的网址的基本身份验证
  4. 禁用具有/zm/cgi-bin/nph-zms?<whatever>
  5. 的网址的基本身份验证

    现在,另外,理想情况下,我想确保2&amp; 3条规则不会导致用户直接加载这些URL并绕过安全性。我不知道如果用户没有在1,2和3中获得认证,他就会强制要求。换句话说,我正在寻找一种方法来检查用户是否已在/zm网址中进行了身份验证。

    我希望这能解释上下文

    (我正在使用apache 2.4)

    到目前为止我已经

    <Location /zm>
       SetEnvIf Request_URI "/zm/cgi-bin" noauth=1
       SetEnvIf Request_URI "/zm/index.php?view=image" noauth=1 #darn, query params not allowed
       AuthType Basic
       AuthName "Auth required"
       AuthUserFile "/etc/apache2/.htpasswd"
       Require valid-user
       Order Deny,Allow
       Satisfy any
       Deny from all
       Allow from env=noauth
    </Location>
    

    我有两个问题:

    • 上述设置允许用户导航到&#34; / zm / cgi-bin&#34;即使 /未经过身份验证(不是我想要的)

    • SetEnvIf不允许查询参数。我需要&#34; view = image&#34;部分 将no_auth设置为/index.php过于宽泛

    由于

    旁注:为了确保我提供完整的图片,我的conf-enabled目录包含以下别名(由第三方服务器创建)

    ScriptAlias /zm/cgi-bin "/usr/lib/zoneminder/cgi-bin"
    <Directory "/usr/lib/zoneminder/cgi-bin">
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        AllowOverride All
        Require all granted
    </Directory>
    
    Alias /zm /usr/share/zoneminder/www
    <Directory /usr/share/zoneminder/www>
      Options -Indexes +FollowSymLinks
      <IfModule mod_dir.c>
        DirectoryIndex index.php
      </IfModule>
    </Directory>
    

0 个答案:

没有答案