Apache2 фильтрует заголовки Auth

Я использую PHP 5.3.6 как модуль Apache 2 (phpinfo ServerAPI говорит "Фильтр Apache 2.0") на машине с Ubuntu. У меня есть приложение PHP, и я хочу, чтобы клиент iOS отправлял ему информацию по https. Конкретно, я хочу отправить токен oAuth2 в заголовке авторизации, используя:

Authorization: Bearer XXXXXXXXX

Будучи XXXXXXXXX, кодировка Base64 токена oAuth2.

Запрос отправляется от клиента iOS должным образом (я вижу заголовок запроса с моей строкой авторизации), и я вижу его, когда он достигает сервера, выполняя getallheaders.

Моя проблема в том, что я не знаю, концептуально ли я прав. Когда я использую обычную аутентификацию, я могу получить имя пользователя и пароль с помощью $_SERVER['PHP_AUTH_USER"] и $_SERVER['PHP_AUTH_PW']. Но здесь я получаю только необработанное значение'Authorization'массива, который возвращает getallheaders. Звучит как "грязный" для меня.

Есть ли другой способ получить токен на моем сервере? Я просто хочу сохранить его в базе данных и использовать позже, чтобы выполнять вызовы API для провайдера токенов от имени моих клиентов.

Большое спасибо заранее, и наилучшими пожеланиями

1 ответ

Решение

К сожалению, PHP пытается быть умным и пытается проанализировать заголовок авторизации.

Ты можешь использовать getallheaders() чтобы получить необработанные данные заголовка, но они недоступны в некоторых SAPI (в моем случае они недоступны в PHP-FPM).

Единственный способ получить доступ к данным - это создать еще одну переменную на стороне сервера и передать ее (например, X-Authorization-Copy или что-то еще). Это в значительной степени зависит от сервера, хотя.

Другие вопросы по тегам