2016-10-06 18 views
0

基本認証をSSLを使用して作成しています。このAPIは、モバイルアプリケーションで使用され、他のかなり基本的な機能を備えたアカウントの作成を可能にします。認証ヘッダーの複数のパラメータが基本認証で機能しない

私はモバイルアプリケーションにAPIキーをハードコードして、ハッカーがログイン(基本認証)を必要としないAPIの部分にアクセスするのを少し難しくすることに決めました。私が読んだことに基づいて、APIキーはHTTPリクエストのAuthorizationヘッダーに格納する必要があります。

Authorizationヘッダー:その後、

Key [email protected]!34vm3.! 

私のPHPのAPI読者ヘッダとキーが正しいことを保証します。そうであれば、APIの基本要素が利用可能です。

問題は、ログインをAPIに渡す必要があるタスクを実行しようとしているときに発生します。

Key [email protected]!34vm3.! Basic c3RhY2tAZ21haWwuY29tOnRlc3RpbmcxMjM= 

APIはまだキーを読み取ることができますが、私は$_SERVER['PHP_AUTH_USER']$_SERVER['PHP_AUTH_PW']にアクセスし、電子メール/パスワード文字列は現在設定されていない:私のAuthorizationヘッダは、このようになります。 apache_request_headers()によって手動でヘッダーを読み取るためにこれを回避する唯一の方法はありますか?

答えて

1

これはカスタムヘッダーなので、別の識別子を使用する必要があります。たとえば:

X-Api-Key: [email protected]!34vm3.! 

基本認証ヘッダーをそのまま残すことができます(カスタムデータを挿入すると実際には機能しないため)。 PHP側で

、カスタムヘッダはまた、あなたのリクエストヘッダが正しい形式であることを確認してください$_SERVER['HTTP_X_API_KEY']

にアクセスすることができます。これは次のようになります:

GET /api/v1/tickets HTTP/1.1 
Host: 123.123.123.123 
Authorization: Basic c3RhY2tAZ21haWwuY29tOnzzz3RpbmcxMjM= 
X-Api-Key: z7='sL(=}24qv'3F 
Cache-Control: no-cache 
Postman-Token: e657c66f-2db1-bf76-78c5-777305b5bfe6 
+0

ありがとうございました!タイマーが立ち上がるとすぐに受け入れます。 PHPでAPIキーにアクセスして編集したところです。 :-) – jskidd3

+0

ヘッダーに 'X-Api-Key'を追加しても、Strange - ' isset($ _ SERVER ['HTTP_X_API_KEY']) 'がfalseを返しています。なぜどんなアイデア?私はコロンとそれを試してみました(どちらが正しいかはわかりませんが、違いはありません)。 – jskidd3

+0

'var_dump($ _ SERVER)'を実行すると、そこに 'HTTP _...'キーがありますか? –