22

JSONデータを生成/消費するWebサービスをいくつか作成し、OAuth2とベアラートークンを使用してそれらを保護しました。これは正常に機能します。

ただし、JSONではなく画像(つまりJPEG / PNGデータ)を生成する同様のWebサービスを構築する必要があります。一貫性を保つために、OAuth2 / Bearerトークンでサービスを保護したいのですが、そうすると、<img>タグを使用して画像データを表示したいブラウザベースのアプリケーションでサービスを利用するのが難しくなります。<img>タグは必要なAuthorization: Bearer ...bearer-token...HTTPヘッダーを送信しません。

私はこれを回避する2つの方法を見ることができます:

  1. サービスのブラウザベースのクライアントは、XHRレベル2とHTML5からのBlobおよびBlob URLスキームを使用して画像データをBlobとして取得し、Blob URLスキームを使用してBlobのURLを生成し、参照するimgタグを動的に作成します。ブロブURL。画像を表示するだけでも大変!

  2. OAuth2インフラストラクチャを変更して、ベアラートークンに加えてHttpCookieを生成します。サービスAuthorirzationを変更して、Authorization:Bearer...OAuth2ヘッダーまたはCookieのいずれかをIDの証明として受け入れるようにします。ベアラトークン、httpOnlyなどと同じ有効期間を持つCookie。ブラウザベースのクライアントは、ブラウザのCookieサポートに依存してサービスにアクセスでき、通常どおり<img>タグを介して画像データを区別できます。ブラウザクライアントには使いやすいですが、標準ではありません。セキュリティリスクプロファイルは、ベアラートークンとCookieのどちらでも同じようです。

後者のアプローチでセキュリティの問題を見落としていますか?

OAuth2で画像/メディアリソースを保護するための代替アプローチはありますか?

4

1 に答える 1

14

user-agent-based applicationブラウザベースアプリにベアラートークンを取得するという観点から、プロファイルを使用していると思います。

OAuth Bearer Token仕様は、トークンをクエリパラメーターとして送信することをサポートしています?access_token=mF_9.B5f-4.1JqM。ブラウザのJavaScriptは、トークンをクエリパラメータとしてimgリンクに追加できます。

これはより標準に基づいたものになりますが、ログなどで値が漏洩することを心配する必要がありaccess_tokenます。セキュリティのトレードオフは、これらのベアラトークンの範囲と、これらのイメージを保護することの重要性に大きく依存すると思います。

Cookieを受け入れるためにOAuthインフラストラクチャを開放すると、新しい攻撃ベクトルにさらされる可能性があると思います。RFC 6750は、CSRF攻撃のリスクを具体的に指摘しています

 Implementations that do store bearer tokens in cookies MUST take precautions
 against cross-site request forgery.
于 2012-12-05T18:42:11.293 に答える