OAuth 2仕様では、「リソースサーバー」と「承認サーバー」は必ずしも同じアプリケーションである必要はないが、実際にどのように実装されるかを理解するのに苦労しています実際には。
例として、次のアプリが存在するとします。
シナリオ1:Webフロントエンドへのログイン
シナリオ#2:サードパーティアプリの承認
理解できないのは、シナリオ#2で許可/拒否フォームを表示する前にユーザーを認証する方法です。ユーザーはメインWebアプリにログインしている可能性がありますが、認証サービスはそのことを認識していないため、どういうわけかユーザーを再度認証する必要があります。認証サービスは、ログイン/セッションもサポートする必要がありますか?
次の2つの理由から、Webアプリが許可/拒否フォームの表示を担当するほうが理にかなっているのではないかと思います。
シナリオ#2の代替案の1つを次に示します。
これを処理する最良の方法は何ですか?一般的なコメント、アドバイスなどは素晴らしいです!
ありがとう
あなたの代わりのシナリオはおそらくあなたが行きたいものです:あなたが本当にあなたの流れを分離したいのであれば、あなたはこのようなことを試すことができます:
OAauth2フレームワークのドキュメント: https://tools.ietf.org/html/rfc6749
(A)クライアントは、許可サーバーで認証し、許可付与を提示することにより、アクセストークンを要求します。
(B)承認サーバーがクライアントを認証し、承認付与を検証し、有効な場合は、アクセストークンと更新トークンを発行します。
(C)クライアントは、アクセストークンを提示することにより、リソースサーバーに対して保護されたリソース要求を行います。
(D)リソースサーバーはアクセストークンを検証し、有効な場合はリクエストを処理します。
(E)手順(C)および(D)は、アクセストークンの有効期限が切れるまで繰り返されます。クライアントは、アクセストークンが期限切れであることを知っている場合、ステップ(G)にスキップします。それ以外の場合は、別の保護されたリソース要求を行います。
(F)アクセストークンが無効であるため、リソースサーバーは無効なトークンエラーを返します。
(G)クライアントは、承認サーバーで認証し、更新トークンを提示することにより、新しいアクセストークンを要求します。クライアント認証の要件は、クライアントのタイプと許可サーバーのポリシーに基づいています。
(H)承認サーバーはクライアントを認証し、更新トークンを検証し、有効な場合は、新しいアクセストークン(およびオプションで新しい更新トークン)を発行します。