SPAのシナリオに最も適したOAuth2フローが不思議です。フロントエンドは角度があり、バックエンドはレールです。シングルページアプリケーション(Angular2 + Rails4)でOAuth2フローを実装する方法
このシナリオでは、認可コード付与タイプが最も適切だと思いますが、ユーザーが自分のアプリケーションにアクセスを許可したときにリダイレクトを処理する方法がわかりません。そのリダイレクトはSPAの精神を破壊し、ユーザーを同じページに保ちます。
おかげ
EDIT(情報を追加しました):
私はより正確にしましょう。特に私はこの流れを使用して私のアプリにGoogleカレンダーを統合しようとしていますhttps://developers.google.com/identity/protocols/OAuth2WebServer。私は様々な問題に直面しています。その大部分は、角度のあるSPAがあるためです。
私の最初の問題は、認証エンドポイントの処理方法です。今まで、私は、現在のユーザーがアプリを承認したかどうかを確認する/google_auth
と呼ばれるデバイスとエンドポイントを持っています。そうでなければ、私はauthorization_uriを持つjsonボディで応答します。ここでは、フロントエンドが認証ダイアログをどのように表示するのかという、最初の問題があります。私がwindow.open
と呼ぶと、ブラウザはポップアップと考えてブラウザをブロックします。私は現在のウィンドウの場所を変更する場合、それは私のアプリを離れることになり、私はこれを望んでいません。
2番目の問題は、ユーザーがGoogleが提示した承認ウィンドウで自分のアプリケーションを認証すると表示されます。ここで、Googleは、前に定義したリダイレクトuriコールバックに認証コード付きのリクエストを送信します。認証にJWTトークンを使用しているので、この要求では、どのユーザーが私に許可を与えてもらえなくなるので、リフレッシュトークンをユーザーに関連付けることはできません。これをどうすれば処理できますか?私はstate
パラメータを使ってJWTトークンを転送できると思っていますが、これは十分安全だとは確信していません。
私はあなたの提案を理解しています。私の質問を更新しましたが、具体的な問題の詳細を記しています:) – flyer88