Я пытаюсь настроить и запустить старое веб-приложение (написанное в 2010 году) в новой среде Linux. Сервер Apache не запускается из-за ошибки Неизвестный доступ поставщика Authz
, вызванной конфигурацией, приведенной ниже.
<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, который определяет доступ
, но security :: AuthCookieHandler
имеет
sub access
{
...
...
}
Я понимаю, что это аутентификация на основе mod_perl
, но раньше не работал с этим. Apache запускается, если эта аутентификация отключена, и приложение загружается в браузере.
Итак, вопросы:
доступ
, чтобы получить возвращаемое значение от дополнительного доступа
? дополнительный доступ
не отображается в конфигурации? доступ
? После нескольких часов исследования я обнаружил, что это из-за изменений в последних версиях Apache и mod_perl.
Из следующих документов:
https://metacpan.org/release/Apache-AuthCookie https://metacpan.org/pod/distribution/Apache-AuthCookie/README.apache-2.4.pod
Я понял, что Apache 2.4 требует mod_perl версии 2.0.9 или выше.
Также необходимо добавить собственный поставщик Authz с использованием PerlAddAuthzProvider
, поэтому я смог решить эту проблему, написав
PerlAddAuthzProvider access security::AuthCookieHandler->access
...
...
<Directory /srv/webapp>
...
...
require access
</Directory>