我编写了一个角度应用程序,它与使用Apache提供页面的第三方后端服务器配合使用。我的许多用户都在Apache中启用基本身份验证。服务器的一个功能是发送使用<img src>
标签在浏览器上呈现的MJPEG图像流。浏览器不允许在图片代码中插入Authorization
标题(我知道有客户端plugins尝试这样做,但为了不离题,他们不会这样做。为MJPEG图像流工作,所以我们假设这不是讨论的事情,以保持简单:))。
所以这是我在apache配置中需要做的事情:
/zm
/zm?view=image&<whatever>
/zm/cgi-bin/nph-zms?<whatever>
现在,另外,理想情况下,我想确保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>