From f0d09c7ad846a02c4d5d99bfe412b0ba35164150 Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Tue, 9 Sep 2008 13:05:51 +1000 Subject: [PATCH] Pass Authorization headers in fastcgi application By default, mod_fcgi doens't allow the Authorization header, so enable -pass-header, and handle the different header name in the xmlrpc view Signed-off-by: Jeremy Kerr --- apps/patchwork/views/xmlrpc.py | 12 ++++++++++-- lib/apache2/patchwork.fastcgi.conf | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/patchwork/views/xmlrpc.py b/apps/patchwork/views/xmlrpc.py index f493cf7..f7a8dac 100644 --- a/apps/patchwork/views/xmlrpc.py +++ b/apps/patchwork/views/xmlrpc.py @@ -51,10 +51,18 @@ class PatchworkXMLRPCDispatcher(SimpleXMLRPCDispatcher): def _user_for_request(self, request): - if not request.META.has_key('HTTP_AUTHORIZATION'): + auth_header = None + + if request.META.has_key('HTTP_AUTHORIZATION'): + auth_header = request.META.get('HTTP_AUTHORIZATION') + elif request.META.has_key('Authorization'): + auth_header = request.META.get('Authorization') + + if auth_header is None or auth_header == '': raise Exception("No authentication credentials given") - str = request.META.get('HTTP_AUTHORIZATION').strip() + str = auth_header.strip() + if not str.startswith('Basic '): raise Exception("Authentication scheme not supported") diff --git a/lib/apache2/patchwork.fastcgi.conf b/lib/apache2/patchwork.fastcgi.conf index 78d8147..a739164 100644 --- a/lib/apache2/patchwork.fastcgi.conf +++ b/lib/apache2/patchwork.fastcgi.conf @@ -4,7 +4,7 @@ NameVirtualHost patchwork.example.com:80 Alias /media/ /srv/patchwork/lib/python/django/contrib/admin/media/ - FastCGIExternalServer /srv/patchwork/htdocs/patchwork.fcgi -socket /srv/patchwork/var/fcgi.sock + FastCGIExternalServer /srv/patchwork/htdocs/patchwork.fcgi -socket /srv/patchwork/var/fcgi.sock -pass-header Authorization RewriteEngine On RewriteCond %{REQUEST_URI} !^/(images|css|js|media)/.* -- 2.39.2