Apache基本身份验证:只有在较早进行身份验证时,才跳过特定模式的身份验证

Apache基本身份验证:只有在较早进行身份验证时,才跳过特定模式的身份验证,apache,Apache,我已经编写了一个angular应用程序,它与使用Apache服务页面的第三方后端服务器一起工作。我的许多用户在Apache中启用基本身份验证。服务器的功能之一是发送使用标记在浏览器上呈现的MJPEG图像流。浏览器不允许在图像标记中插入Authorization标题(我知道有一些客户端尝试这样做,但为了不离题,它们不适用于MJPEG图像流,所以让我们假设这不适合讨论以保持简单:)) 下面是我需要在apache配置中执行的操作: 为我的主门户启用基本身份验证,即/zm 对具有/zm?view=ima

我已经编写了一个angular应用程序,它与使用Apache服务页面的第三方后端服务器一起工作。我的许多用户在Apache中启用基本身份验证。服务器的功能之一是发送使用
标记在浏览器上呈现的MJPEG图像流。浏览器不允许在图像标记中插入
Authorization
标题(我知道有一些客户端尝试这样做,但为了不离题,它们不适用于MJPEG图像流,所以让我们假设这不适合讨论以保持简单:))

下面是我需要在apache配置中执行的操作:

  • 为我的主门户启用基本身份验证,即
    /zm
  • 对具有
    /zm?view=image&
  • 对具有
    /zm/cgi-bin/nph-zms?
  • 现在,除此之外,理想情况下,我希望确保2&3规则不会导致用户直接加载这些URL并绕过安全性。我想强制规定,如果用户没有在1中获得身份验证,那么2和3也不会起作用。换句话说,我正在寻找一种方法来检查用户是否已在
    /zm
    url中通过身份验证

    我希望这能解释背景

    (我正在使用Apache2.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>
    

    什么是apache版本?嗨,我更新了q:2.4,但是你说的“如果1经过身份验证,跳过某个东西的身份验证”是什么意思?无论如何只需要一次凭据。对不起,我的意思是,如果用户未输入凭据并尝试直接访问这些URL,则不应允许使用2和3。您是否需要对URI进行身份验证,而不是2、3和(确切地说)
    /
    ?(例如/foo.html)
    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>