OAuth2 RFC に従って、リソースサーバーがアクセストークンに関連付けられているユーザーを推測できるかどうか、またはそれが予想される場合でも、誰かが片付けてくれるとありがたいです。
次のことを前提とします。
トークンは不透明であり、独立したリソースサーバーにもクライアントにも意味がないため、クライアントがそのアクセストークンを使用してユーザーから写真にアクセスして印刷することを妨げるものはありません。それを承認した人だけ。
これは正解?または、リソースサーバーはユーザーをトークンにどのように関連付けて、その使用を制限しますか?
リソースサーバーが認証サーバーにトークンメタデータを照会する方法として、 OAuth 2.0 Token Introspection を実装できます。
定義されたイントロスペクション応答フィールドを使用して、sub
およびusername
フィールドでリソース所有者IDを転送できます。
さらに、トークンが本当に不透明な場合は、チェックする方法であるため、イントロスペクションを実装する必要があるだけでなく、実装する必要があります。
oAuth 2.0にはこれを行うための組み込みメカニズムはありませんが、これを機能させるために使用できるスキームがいくつかあります。
必要なユーザー情報を取得するために、トップオフの認証レイヤーを使用oAuth(openID Connectなど)
ユーザーの詳細ごとにスコープを追加して、そのユーザーの詳細にアクセスし、そのユーザーにのみそのスコープを付与します。発生する可能性のある情報漏洩に注意してください。
承認プロバイダーをゲートキーパーとして使用し、画像が実際に保存されているリソースサーバーではなく、特定のユーザーに対して要求された詳細を提供します。警官のようなものですが、うまくいくでしょう。
OAuthはauthorizationを処理します。トークンは、委任されたアクセス許可のみを示します。権限を委任したユーザーに関する情報も含まれている可能性がありますが、実際にはユーザーを表していません。アクセス許可を理解し、それに応じて使用を制限するのは、リソースサーバーの役割です。
サーバーの性質上、ユーザーのIDなしではこれを設定できない場合は、OAuthと連動するauthenticationソリューション(OpenID Connectなど)が必要になります。
承認は、アプリケーションサーバーと承認サーバーの信頼性を維持するリダイレクトの実装で実行されます。
OAuthはさまざまなタイプのワークフローをサポートしています。 Authorization Code Grantタイプは、Webブラウザーのリダイレクト機能を利用するように最適化されているため、最も一般的に使用されます。
詳細については、次のリソースをご覧ください:-
https://revs.runtime-revolution.com/an-in-depth-look-at-the-oauth2-redirect-flow-8a5e6c964085