Apache - Mod Perl - Доступ к неизвестному провайдеру Authz

Я пытаюсь настроить и запустить старое веб-приложение (написанное в 2010 году) в новой среде Linux. Сервер Apache не запускается из-за ошибки Unknown Authz provider access, вызванной приведенной ниже конфигурацией.

<Directory /srv/webapp>
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    SetOutputFilter DEFLATE
    ExpiresActive On
    ExpiresDefault "3 Months"
    AuthType security::AuthCookieHandler
    AuthName Maxio
    PerlAuthenHandler security::AuthCookieHandler->authenticate
    PerlAuthzHandler security::AuthCookieHandler->authorize
    require access
</Directory>

Я не смог найти никакой документации для этого или любого модуля apache, который определяет access , но security::AuthCookieHandler имеет

sub access
{
...
...
}

Я понимаю, что это аутентификация на основе mod_perl, но раньше с этим не работал. Apache запускается, если эта аутентификация отключена, и приложение загружается в браузере.

Итак, вопросы

  1. Должен ли require access получать возвращаемое значение от sub access ?
  2. Если да, то почему sub access не отображается в конфигурации?
  3. Если нет, то что здесь access?

person Diode    schedule 27.02.2017    source источник


Ответы (1)


После нескольких часов исследований я обнаружил, что это связано с изменениями в последних версиях Apache и mod_perl.

Из документации Apache-AuthCookie и примечания по переносу Apache 2.4 я узнал, что для Apache 2.4 требуется mod_perl версии 2.0.9 или выше.

Кроме того, необходимо добавить настраиваемого поставщика аутентификации с помощью PerlAddAuthzProvider. Я смог решить свою проблему, выполнив

PerlAddAuthzProvider access security::AuthCookieHandler->access
...
...
<Directory /srv/webapp>
    ...
    ...
    require access
</Directory>
person Diode    schedule 27.02.2017