Извлечение пользовательского заголовка авторизации из входящего запроса PHP - PullRequest
30 голосов
/ 25 мая 2010

Поэтому я пытаюсь проанализировать входящий запрос в PHP, который имеет следующий установленный заголовок:

Authorization: Custom Username

Простой вопрос: с какой стати я могу в него попасть? Если бы это было Authorization: Basic, я мог бы получить имя пользователя от $_SERVER["PHP_AUTH_USER"]. Если бы это было X-Custom-Authorization: Username, я мог бы получить имя пользователя от $_SERVER["HTTP_X_CUSTOM_AUTHORIZATION"]. Но ни один из них не устанавливается пользовательской авторизацией, var_dump($_SERVER) не раскрывает упоминания заголовка (в частности, отсутствует AUTH_TYPE), а функции PHP5, такие как get_headers(), работают только с ответами на исходящие запросы. Я использую PHP 5 на Apache с готовой установкой Ubuntu.

Ответы [ 5 ]

41 голосов
/ 25 мая 2010

Если вы собираетесь использовать только Apache, вы можете взглянуть на apache_request_headers().

40 голосов
/ 01 мая 2013

Для аутентификации на основе токена:

  $token = null;
  $headers = apache_request_headers();
  if(isset($headers['Authorization'])){
    $matches = array();
    preg_match('/Token token="(.*)"/', $headers['Authorization'], $matches);
    if(isset($matches[1])){
      $token = $matches[1];
    }
  } 
18 голосов
/ 20 сентября 2017

Добавьте этот код в .htaccess

RewriteEngine On
RewriteRule .* - [e=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Передайте свой заголовок как Authorization: {auth_code} и, наконец, вы получите код авторизации, используя $_SERVER['HTTP_AUTHORIZATION']

8 голосов
/ 25 августа 2016

Для фона, почему Apache отфильтровывает заголовок Authorization: https://stackoverflow.com/a/17490827

Решения в зависимости от того, какой модуль Apache используется для передачи запроса приложению:

mod_wsgi, mod_fcgid:

ИК:

Другие хаки - массируя заголовки в этом вопросе:

2 голосов
/ 24 апреля 2018

Использование Juste:

$headers = apache_request_headers();
$token = $headers['token'];
...