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

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

После нескольких часов исследования я обнаружил, что это из-за изменений в последних версиях 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>