1

是否可以在 Apache2.4 中使用 'wsgi' 作为 AuthFormProvider?

作为第一次尝试,我编辑了此处找到的示例。配置现在看起来像这样但不起作用:

<Location "/test">
    AuthType Form
    AuthFormProvider wsgi
    AuthName "test"
    AuthFormLoginRequiredLocation /login.html
    WSGIAuthUserScript /path/to/django/wsgi.py
    WSGIAuthGroupScript /path/to/django/wsgi.py
    Require Group test
    Require valid-user
    Session On
    SessionCookieName xyz path/
    SessionCrypotPassphrase 123456789
</Location>
4

2 回答 2

2

首先,您必须使用 mod_wsgi 4.3.0 才能使 WSGIAuthGroupScript 与 Apache 2.4 一起使用。Apache 2.4 的内部结构从 2.2 发生了变化,这只是最近才实现的。该问题仅在最新版本的 mod_wsgi 中得到解决。如果您卡在 Linux 发行版中的较旧 mod_wsgi 版本并拒绝更新,那么您将不走运。

其次,您必须使用:

Require wsgi-group test

在 Apache 2.4 下,您不能使用:

Require group test

如果使用 WSGI 身份验证提供程序。

这又是因为 Apache 2.4 的变化。

总的来说,我建议您将您的问题发布到 mod_wsgi 邮件列表,我会在那里处理它。在 StackOverflow 上,任何类型的冗长来回讨论都是一个糟糕的地方,我可以很容易地看到它变成了这种情况。

对于它的价值,我一直热衷于研究 mod_session 与 mod_wsgi 的交互,但如果你跳转到 mod_wsgi 邮件列表,我从来没有机会帮助探索这个问题。

于 2014-09-20T05:25:47.700 回答
0

解决方案是我必须更新到 mod_wsgi 4.3.0 并按照 Graham Dumpleton 在他的回答(或此处)中提到的那样更改配置。

除了更新之外,我还删除了指令 AuthFormLoginRequiredLocation 并添加了一个 ErrorDocument 指令。

工作配置现在如下所示:

<Location "/test">
    AuthType Form
    AuthFormProvider wsgi
    AuthName "test"
    ErrorDocument 401 /login.html
    WSGIAuthUserScript /path/to/django/wsgi.py
    WSGIAuthGroupScript /path/to/django/wsgi.py
    <RequireAll>
        Require wsgi-group test
        Require valid-user
    </RequireAll>
    Session On
    SessionCookieName xyz path/
    SessionCrypotPassphrase 123456789
</Location>
于 2014-09-21T18:59:42.487 回答