Apache 删除“授权”标头

问题描述 投票:0回答:3

我的 Apache 2.2.15 服务器遇到了一些小问题。 我正在使用 mod_wsgi 在其上运行 Django 应用程序。我激活了

WSGIPassAuthorization On
,这使得基本身份验证运行良好。但我最近实现了 OAuth2.0 来保护我的 API(隐式授予),我认为 Apache 不会让它通过,因为它的形式是“授权:不记名令牌”。我猜“承载者”是问题所在,尽管我不知道如何避免它。

我试过了:

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

在httpd.conf、.htaccess(设置

AllowOverride All
后)和我的虚拟主机中。没什么可做的,没有作用。 我在网上爬了一整天,除了这两个解决方案之外没有找到任何东西。

提前谢谢您!

编辑:

OS : RedHatEL6.4
Apache : 2.2.15
Django: 1.6.6 w/ django-oauth-toolkit
Python: 2.7.8
django apache oauth-2.0 mod-wsgi
3个回答
43
投票

我解决了我的问题,这最终与我的 Apache 配置完全无关。因此,如果您发现此主题正在寻找同一问题的答案,则以下解决方案之一应该可以修复它:

配置 WSGI :

WSGIPAssAuthorization On

配置.htaccess:

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

您可以将这两个文件放入您的 httpd/conf.d/project.conf 文件中!


12
投票

一些模块将剥离授权标头,以尝试通过阻止脚本查看用户名、密码等来增强安全性……除非开发人员明确启用此功能。 如果您只需将以下行添加到 .htaccess 中,许多这些模块将允许此标头:

CGIPassAuth on
(来源:Apache docsStackOverflow


1
投票

为了解决这个问题,我只需将

WSGIPassAuthorization On
添加到
/etc/apache2/sites-available/mySite.conf
文件中,如下:


...
        </Files>
</Directory>

WSGIPassAuthorization On

WSGIScriptAlias / /home/X/wsgi.py
WSGIDaemonProcess sepanta_dev python-path=/home/X python-home=/home/X/venv
...

© www.soinside.com 2019 - 2024. All rights reserved.