widestream
@widestream

Как настроить apache mod_proxy для пропуска Authorization header с oauth2 токеном?

Добрый день.

Сейчас настраиваю сервис, который спрятан за сервером с mod_proxy и возникла проблема - mod_proxy удаляет заголовок "Authorization"

Сам сервис написан на django и я написал небольшой middleware что б выводить заголовки в логгер и потом сравнить их. итого, имеем на dev-сервере:

Хоть наверняка это проблема не django, вот middleware:

import logging
import re
from django.http import HttpResponseRedirect

logger = logging.getLogger(__name__)

class CurrentMetaMiddleware(object):

	def process_request(self, request):
		regex = re.compile('^HTTP_')
		z = dict((regex.sub('', header), value) for (header, value) 
		       in request.META.items() if header.startswith('HTTP_'))
		logger.error(z)
		return None


[23/Sep/2014 14:00:32] ERROR [pipelineapi.middleware:14] {'HOST': '127.0.0.1:8000', 'ACCEPT_ENCODING': 'gzip, deflate', 'ACCEPT': '*/*', 'AUTHORIZATION': 'Bearer 9aea813534cb064ab8c6b617c8f23bf68fec3464', 'USER_AGENT': 'python-requests/2.3.0 CPython/2.7.8 Linux/3.14-1-amd64'}


и абсолютно идентичный запрос, кроме самих значений заголовка(я получаю другой токен, для запроса), на продакшен, через mod_proxy:
[23/Sep/2014 14:01:52] ERROR [pipelineapi.middleware:14] {'HOST': 'api.some-server.com', 'ACCEPT': '*/*', 'CONNECTION': 'Keep-Alive', 'USER_AGENT': 'python-requests/2.3.0 CPython/2.7.8 Linux/3.14-1-amd64', 'X_FORWARDED_SERVER': ''api.some-server.com', 'X_FORWARDED_HOST': 'api.some-server.com', 'X_FORWARDED_FOR': '192.168.0.18', 'ACCEPT_ENCODING': 'gzip, deflate'}

Как видно, во втором логе нет заголовка Authorization.

Пожалуйста, подскажите, почему это происходит и как с этим бороться?
  • Вопрос задан
  • 2548 просмотров
Решения вопроса 1
widestream
@widestream Автор вопроса
Отвечу сам. Это оказалось не проблема mod_proxy, а нюанс mod_wsgi:)

в конфиге virtual_host добавляем строку:

WSGIPassAuthorization On

И перезапускаем сервер. Вуаля.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы