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 Вот?

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>
Другие вопросы по тегам