mod_authz_basic 和 CloudFront(原为:mod_authz 基本目录与带有 vhosts 的位置)

mod_authz_basic 和 CloudFront(原为:mod_authz 基本目录与带有 vhosts 的位置)

我在使用 Apache 基本身份验证时遇到了问题。我有一台 EC2 服务器,位于 AWS 弹性负载均衡器和 CloudFront 后面。我在这台机器上运行了多个域。我使用 Apache 基本身份验证来访问某些区域,但所有区域都使用相同的 htpassd 和 htgroups 文件。对于一个域,它工作正常,限制对完整子域的访问,但对于另一个域,它无法限制对某个位置的访问(或者,它工作得太好 - 我无法访问)。

环境:Apache 2.4.43 OpenSSL 1.0.2k-fips SVN 1.14.0 PHP 7.4.5

故障模式是针对locationconf.d/subversion.conf 中定义的 Apache 的:

   <Location /repos>
   DAV svn
   SVNParentPath /var/svn/
   SVNListParentPath On
   LogLevel debug
  Options All
  AllowOverride All Options

  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /mnt/data/etc/htpasswd
  AuthGroupFile /mnt/data/etc/htgroups
  Require group subversion

错误文件显示

[Mon Aug 17 00:04:47.658169 2020] [authz_core:debug] [pid 30612] mod_authz_core.c(818): [client 10.0.200.51:11378] AH01626: authorization result of Require group subversion: denied (no authenticated user yet)
[Mon Aug 17 00:04:47.658511 2020] [authz_core:debug] [pid 30612] mod_authz_core.c(818): [client 10.0.200.51:11378] AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
[Mon Aug 17 00:04:54.816887 2020] [authz_core:debug] [pid 30548] mod_authz_core.c(818): [client 10.0.200.51:11382] AH01626: authorization result of Require group subversion: denied (no authenticated user yet)
[Mon Aug 17 00:04:54.817233 2020] [authz_core:debug] [pid 30548] mod_authz_core.c(818): [client 10.0.200.51:11382] AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)

在 conf.d/vhost.conf 文件中www.myhost.com,我试图www.myhost.com/repos使用上面的 SVN 配置,我也有

    <Directory />
            Options All
            #Allow from All
            #Order Allow,Deny
            Require all granted
            AllowOverride All Options
            ...

我花了很长时间才找到各种解决办法,然后才想起来(并确认)我在同一个 EC2 主机和 Apache 实例上针对不同的场景使用了相同的身份验证机制。这在 vhost.conf 中运行良好:

    ServerName dev.anotherdomain.com
    <Directory />
            Options All
            #Allow from All
            #Order Allow,Deny
            AllowOverride All Options

            # AuthType Digest
            AuthType Basic
            AuthName "DevAndTest"
            AuthUserFile /mnt/data/etc/htpasswd
            AuthGroupFile /mnt/data/etc/htgroups
            Require group adifferentgroup

这似乎工作正常,这让我有点困惑:(

答案1

事实证明,问题在于我需要Authorization在 Cloudfront 发行版中将标头列入白名单。原始问题中的子域名案例有效,因为它不在 Cloudfront 后面。

相关内容