【问题标题】:Two Django Sites on the same Apache Server - basic auth between the two giving 403 Forbidden同一 Apache 服务器上的两个 Django 站点 - 两者之间的基本身份验证给出 403 Forbidden
【发布时间】:2014-09-05 13:08:23
【问题描述】:

我正在运行来自 Apache 的两个 Django 站点。一个是 API 的演示页面,因此通过 HTTP 基本身份验证对另一个进行一些 API 调用。我也尝试从同一个站点做同样的事情,但我遇到了同样的问题。

发出请求时,Apache 会给出 403 错误消息/页面。

以下是API服务器的必要部分虚拟主机:

<VirtualHost 12.34.567.890:80>
    ServerAdmin admin@example.com
    ServerName dev.example.com
    ServerAlias dev.example.com

    ErrorLog /var/log/apache2/lab-error.log

    WSGIScriptAlias / /webapps/lab/lab-wsgi.py

    WSGIPassAuthorization On

    <Directory /webapps/lab>
        <Files lab-wsgi.py>
            Order deny,allow
            Allow from all
        </Files>
    </Directory>
</VirtualHost>

这是演示站点的虚拟主机:

<VirtualHost 12.34.567.890:80>
   ServerAdmin admin@example.com
    ServerName dvdemo.example.com
    ServerAlias dvdemo.example.com

    ErrorLog /var/log/apache2/demo-error.log

    WSGIScriptAlias / /webapps/lab/demo/Demo/wsgi.py

    WSGIPassAuthorization On

    <Directory /webapps/lab/demo/Demo>
        <Files wsgi.py>
            Order allow,deny
            Allow from all
        </Files>
    </Directory>
</VirtualHost>

看来,虽然我有WSGIPassAuthorization On,但基本身份验证仍在由 Apache 处理(如果身份验证失败,则 Apache 403 页面而不是来自 Django 的 JSON 错误)。

如果我从本地机器向 API 服务器发出相同的请求,它会起作用。

对可能出现的问题或我应该进一步调查的问题有什么建议吗?谢谢

编辑澄清: API 服务器有一个 OAuth2 API,我正在尝试为其创建演示页面/站点。如果我通过 cURL 或不同的服务器发出对 API 的请求,则请求成功,并且仅当请求来自与 API 相同的服务器(不同或相同的虚拟主机)时才会出现问题。

【问题讨论】:

    标签: django apache wsgi basic-authentication


    【解决方案1】:

    文件指令中不能有子目录。使用:

    <Directory /webapps/lab/demo/Demo>
        <Files wsgi.py>
            Order allow,deny
            Allow from all
        </Files>
    </Directory>
    

    WSGIPassAuthorization 用于传递 HTTP 基本身份验证所需的凭据。 Django 使用基于表单的身份验证通常不太可能需要它。您是否确定在 Django 中使用某些东西来进行 HTTP 基本身份验证。阐明您在哪里处理 HTTP 基本身份验证。

    【讨论】:

    • 是的,Django 肯定在使用 HTTP Basic Auth。 API 服务器有一个 OAuth2 API,我正在尝试为其创建演示页面/站点。就像我说的,它可以从除同一服务器之外的任何地方请求 API 端点。我也尝试修复您提到的 Files 指令,以防万一,但没有运气。
    猜你喜欢
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    相关资源
    最近更新 更多