2

私はauthorization_code付与タイプを使用しています。私はすでにクライアント、auth_code を作成してから、アクセス トークンと更新トークンをすべて正常に作成しました。今、私は access_token を使用しようとしていますが、ここで問題が発生します。リクエスト/クエリ パラメータとして指定するaccess_token=123456789と、完全に機能し、リクエストされたリソースを取得できます。

しかし、セキュリティ上の理由から、実際には Authorization ヘッダーに埋め込む方が良いと読んだことがあります。私はこれを試していますが、うまくいきません:

Authorization: Bearer 123456789

も試しました:

Authorization: 123456789

そして何も機能しません。私が得るのは次のとおりです。

{
    "error": "access_denied",
    "error_description": "OAuth2 authentication required"
}

何か案は?サーバーとクライアントの両方で SSL を使用している場合、ヘッダーの代わりにパラメーターを安全に使用できますか?

4

1 に答える 1

2

さて、私は自分で解決策を見つけました。これは実際には「重複した」質問と見なすことができますが、今まで知りませんでした. エラーを追跡しようとすると、Authorization ヘッダーが Symfony プロファイラーに完全に欠落していることがわかりました (幸いなことに、Symfony は、各要求に関連するプロファイラー URL を応答で送信します)。そこで、「symfony に認証ヘッダーがありません」(または似たようなもの、覚えていない) を検索したところ、次のものが見つかりました。

Symfony 2でリクエストヘッダーバッグにAuthorizationヘッダーがありませんか?

私にとって最も効果的だったのは、メゾッドの答えでした。それを Apache の仮想ホスト構成ファイルに入れて、Apache サービスをリロードしました。今では動作します。「access_token」リクエストパラメーターとして配置する必要はありません。勝利の承認ヘッダー。ちなみに、現在機能しているのは次のとおりです。 Authorization: Bearer 123456789

はい、Bearer に大文字の B があります。他のすべての組み合わせ (非大文字、Bearer の代わりに OAuth、トークン自体のみ) は惨めに失敗しました。

誰かがそのリンクにアクセスできない場合に備えて、これを仮想ホスト構成ファイルに入れることです(まだ .htaccess で試していません):

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

それだけです。それが私のためにしたことの少なくとも半分を誰かに役立つことを本当に願っています.

于 2016-07-19T17:48:05.143 に答える