Подтвердить что ты не робот

Получение пользовательского заголовка авторизации из входящего запроса PHP

Итак, я пытаюсь разобрать входящий запрос в 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.

4b9b3361

Ответ 1

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

Ответ 2

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

  $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];
    }
  } 

Ответ 3

Для фона, почему Apache фильтрует заголовок Authorization: fooobar.com/questions/153825/...

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

mod_wsgi, mod_fcgid:

CGI:

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

Ответ 4

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

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

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