2017-10-24 4 views
0

OpenID Connect暗黙のフローでは、認証サーバーは認証が成功した後にクライアントにリダイレクトします。 locationヘッダーには、トークンがURLフラグメント(#id_token=xyz)として含まれます。OpenId Connect Implicit Flowを使用するときにクライアントのトークンを保護する方法

これは、トークンが参照元などを介してリソースを含むようにユーザーエージェントから漏洩しないように保護します。

ただし、javascriptファイルなどのサードパーティリソースがリダイレクトターゲットページに含まれている場合、それらのスクリプトはドキュメントの場所を介してトークンにアクセスします。

サードパーティのリソースを含むときにクライアント側のトークンを保護するベストプラクティスは何ですか?例えば。あなたは通常、リダイレクトする前にクッキーのURLフラグメントを交換する「制限付き」リダイレクトターゲットを実装しますか?

更新

ビット鮮明にするには、次の答えに沿って@janhalasaの攻撃のシナリオでは、信頼されていないのJavaScriptを含めることではありません。攻撃の行は、トークンのより偶発的な漏洩である。ドキュメントuriを外部サーバに送信するライブラリ(google analytics?)ハッシュフラグメントをセッションストレージに移動することによって、誤って漏洩することはありません。

答えて

1

使用している外部ライブラリを信頼しない場合は、使用を中止する方がよいでしょう。 JavaScriptコードを使用してIDトークン(cookie、sessionStorage、localStorage)を非表示にすると、コードとライブラリコードの両方が同じランタイム環境で実行されるため、ライブラリはこれを見つけることができます。

トークンをsessionStorageに保存し、それを必要とする要求にのみ添付するのが一般的な方法だと思います。 sessionStorageには、リロード/リダイレクトを引き継ぐことができるという利点があり、アプリケーションのドキュメントでしかアクセスできません。

関連する問題