Apache-mod_perl:未知的 Authz 提供程序“访问”

Apache-mod_perl:未知的 Authz 提供程序“访问”

我正在尝试在新的 Linux 环境中设置并运行一个旧的 Web 应用程序(编写于 2010 年)。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>

相关内容