summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2008-09-09 13:05:51 +1000
committerJeremy Kerr <jk@ozlabs.org>2008-09-09 13:11:12 +1000
commitf0d09c7ad846a02c4d5d99bfe412b0ba35164150 (patch)
tree1125baf6ede8679755361adad465d7bb39a15fdf
parent13f4232358785f4ca89ce1c4605a4b01db1940ef (diff)
downloadpatchwork-f0d09c7ad846a02c4d5d99bfe412b0ba35164150.tar.bz2
patchwork-f0d09c7ad846a02c4d5d99bfe412b0ba35164150.tar.xz
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 <jk@ozlabs.org>
-rw-r--r--apps/patchwork/views/xmlrpc.py12
-rw-r--r--lib/apache2/patchwork.fastcgi.conf2
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)/.*