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 запускается, если эта аутентификация отключена, и приложение загружается в браузер.
Итак, вопросы
- Является
require access
должен получить возвращаемое значение отsub access
? - Если так, то почему
sub access
не видна конфигурация? - Если нет, то что
access
Вот?
1 ответ
После нескольких часов исследований я обнаружил, что это из-за изменений в последних версиях 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>