2016-03-28 15 views
4

モバイルアプリケーションからPHPバックエンドと通信するためにJSON Webトークンを設定しようとしています。私はちょうどいいトークンを要求することができます。私はそれを検証する(または別のエンドポイントへの要求を行う)する必要がある場合には、私のセットアップ次の形式のAuthorizationヘッダー:JWTを使用した承認ヘッダーがありません

Bearer <token here> 

しかし、私のバックエンドにいくつかの理由で、$_SERVER['HTTP_AUTHORIZATION']が設定されていません。

私はlocalhost上でPHP7でMamp Proを使用しています。これは私の$_SERVERアレイのダンプです:

Array 
(
    [SERVER_SOFTWARE] => Apache 
    [REQUEST_URI] => /wp-json/jwt-auth/v1/token/validate/ 
    [REDIRECT_STATUS] => 200 
    [HTTP_HOST] => localhost.dev 
    [CONTENT_TYPE] => application/x-www-form-urlencoded 
    [CONTENT_LENGTH] => 54 
    [HTTP_CONNECTION] => keep-alive 
    [HTTP_ACCEPT] => */* 
    [HTTP_USER_AGENT] => CocoaRestClient/15 CFNetwork/760.2.6 Darwin/15.3.0 (x86_64) 
    [HTTP_ACCEPT_LANGUAGE] => en-us 
    [HTTP_ACCEPT_ENCODING] => gzip, deflate 
    [PATH] => /usr/bin:/bin:/usr/sbin:/sbin 
    [SERVER_SIGNATURE] => 
    [SERVER_NAME] => cloud.iblue.eu 
    [SERVER_ADDR] => ::1 
    [SERVER_PORT] => 80 
    [REMOTE_ADDR] => ::1 
    [DOCUMENT_ROOT] => /Applications/MAMP/htdocs/dev 
    [SERVER_ADMIN] => [email protected] 
    [SCRIPT_FILENAME] => /Applications/MAMP/htdocs/dev/index.php 
    [REMOTE_PORT] => 51804 
    [REDIRECT_URL] => /wp-json/jwt-auth/v1/token/validate/ 
    [GATEWAY_INTERFACE] => CGI/1.1 
    [SERVER_PROTOCOL] => HTTP/1.1 
    [REQUEST_METHOD] => POST 
    [QUERY_STRING] => 
    [SCRIPT_NAME] => /index.php 
    [PHP_SELF] => /index.php 
    [REQUEST_TIME_FLOAT] => 1459177711.33 
    [REQUEST_TIME] => 1459177711 
    [argv] => Array 
     (
     ) 

    [argc] => 0 
) 

私はAuthorizationヘッダとしてBasic dGVzdEB0ZXN0LmNvbToxMjM0NQ==でHTTP基本認証を使用しようとしている、それが正常に動作します:

[PHP_AUTH_USER] => [email protected] 
[PHP_AUTH_PW] => 12345 

任意のアイデアをいただきました!間違っていますか?

+1

私の.htaccessファイルに 'RewriteCond%{HTTP:Authorization}。+ RewriteRule。* - [E = HTTP_AUTHORIZATION:%{HTTP:Authorization}]'と書かなければなりませんでした。あなたはそれを試すことができます。 –

+0

ありがとう、私はそれを試みた(https://github.com/Tmeister/wp-api-jwt-authの指示に従う)、悲しいことに、まだ動作していない:( – passatgt

答えて

0

私はこの問題(同じプラグインを持っていました! )、および検証機能を編集して、それを解決:

// in public/class-jwt-auth-plugin.php 
// Check for auth in raw headers without $_SERVER variable (Apache Server). 
if (!$auth && function_exists('getallheaders')) { 
    $headers = getallheaders(); 
    $auth = isset($headers['Authorization']) 
    ? $headers['Authorization'] : false; 
} 

を私はPHPの専門家ではないが、このコードが起動するプラグインに含めることができない理由は、私が表示されませんと。

関連する問題