Назад | Перейти на главную страницу

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

Режим отказа предназначен для Apache location определено в conf.d / subversion.conf:

   <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

Кажется, это работает нормально, что меня немного смутило :(

Оказалось, что проблема заключалась в том, что мне нужно было внести в белый список Authorization заголовки в раздаче Cloudfront. Случай поддомена в исходном вопросе работал, потому что он не находился за Cloudfront.