web-dev-qa-db-ja.com

着信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_が欠落しています)、get_headers()のようなPHP5関数のみが機能します発信要求への応答。すぐに使えるUbuntuをインストールしたApacheでPHP 5を実行しています。

32
jpatokal

Apacheのみを使用する場合は、 Apache_request_headers() をご覧ください。

42
halfdan

トークンベースの認証の場合:

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

このコードを.htaccessに追加します

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

Authorization: {auth_code}のようなヘッダーを渡し、最後に$_SERVER['HTTP_AUTHORIZATION']を使用して認証コードを取得します

21

背景として、ApacheがAuthorizationヘッダーを除外する理由: https://stackoverflow.com/a/17490827

アプリケーションにリクエストを渡すために使用されるApacheモジュールに応じたソリューション:

mod_wsgi、mod_fcgid:

cgi:

他のハッキング-この質問のヘッダーをマッサージする:

8
joonas.fi

Justeの使用:

$headers = Apache_request_headers();
$token = $headers['token'];
3
Houssin Boulla