Thinktecture AuthorizationServer (AS) を使用していますが、うまく機能しています。
WebAPI を直接呼び出すことができるネイティブの JavaScript シングル ページ アプリを作成したいと考えていますが、暗黙的なフローでは更新トークンが提供されません。
AJAX 呼び出しが行われた場合、トークンの有効期限が切れている場合、データが動的ポップアップを使用しているため、API はログイン ページにリダイレクトを送信します。これにより、ユーザーが中断されます。
Facebook または Stackoverflow はどのようにこれを行い、ページ上で実行されている JavaScript が API を呼び出すことを許可しますか?
提案された解決策
以下のシナリオは理にかなっていますか (これが iframe で実行できると仮定します):
私の SPA は私を AS に誘導し、Implicit Flow によってトークンを取得します。AS 内でRead data
スコープを許可をクリックし、 をクリックRemember decision
してからAllow
ボタンをクリックします。
ボタンをクリックしたのでRemember decision
、トークンの AS を押すたびに、新しいトークンが自動的に返されます。
私のSPA(信頼できないアプリ)では、リフレッシュトークンはなく、アクセストークンしかありません。代わりに私は:
- ユーザーがログインし、[決定を記憶] をクリックしたことを確認します (そうでない場合、iframe は機能しません)。
- WebAPI を呼び出し、401 応答が返された場合は、以下の手順で新しいトークンを取得してください...
- ページに非表示の iframe を配置します。この URL を設定して、認可サーバーから新しいアクセス トークンを取得します。
- iframe のハッシュ フラグメントから新しいトークンを取得し、これを SPA に保存して、今後のすべての WebAPI リクエストに使用します。
FedAuth Cookie が盗まれたら、私はまだ困ると思います。
上記のシナリオの標準または推奨される方法はありますか?