mod_authz_basic と CloudFront (旧: mod_authz 基本ディレクトリと vhosts を使用した場所)

mod_authz_basic と CloudFront (旧: mod_authz 基本ディレクトリと vhosts を使用した場所)

Apache 基本認証の使用で問題が発生しています。AWS エラスティック ロード バランサーと CloudFront の背後に 1 台の EC2 サーバーがあります。マシン上で複数のドメインを実行しています。特定の領域へのアクセスに Apache 基本認証を使用していますが、すべて同じ htpassd ファイルと htgroups ファイルを使用しています。1 つのドメインでは正常に動作し、サブドメイン全体へのアクセスを制限していますが、別のドメインでは、場所へのアクセス制限が機能していません (または、うまく動作しすぎてアクセスできません)。

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

location失敗モードは、conf.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、上記のSVNの設定を使用してアクセスしようとしてwww.myhost.com/reposいますが、

    <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

問題は、AuthorizationCloudfront ディストリビューションでヘッダーをホワイトリストに登録する必要があることでした。元の質問のサブドメインのケースは、Cloudfront の背後に配置されていなかったため機能しました。

関連情報