リソースオーナー(Resource Owner)
リソースオーナーは、アクセスしたいデータやリソース(情報やサービス)の所有者、つまりユーザーのことです。リソースオーナーは、自身のデータにアクセスする権限を持っており、この権限を他のアプリケーション(クライアント)に委譲できる立場です。
例:リソースオーナーがユーザーである場合、ユーザーは自身のSNSデータ、写真、またはGoogleの連絡先リストなどのリソースを所有しています。
役割:アクセスを許可または拒否する権利を持っており、通常は認可サーバー経由でアクセス許可の操作を行います。
リソースサーバー(Resource Server)
リソースサーバーは、リソースオーナーのデータを実際に保存・管理しているサーバーで、クライアントのリクエストに応じてデータを提供します。リソースサーバーは、アクセスの際にクライアントからアクセストークンを受け取り、そのトークンが有効であればデータへのアクセスを許可します。
例:Google Driveのデータを保存しているGoogleのAPIサーバーや、Facebookのユーザープロフィールデータを保持しているFacebookのサーバーなどがリソースサーバーです。
役割:アクセストークンの認証を行い、有効なトークンであればクライアントに対してリソースを提供します。直接的な認証を行うのではなく、トークンを受け取ることで認可の確認を行います。
クライアント(Client)
クライアントは、リソースオーナーのデータにアクセスするために許可を求めるアプリケーションやサービスです。クライアントはリソースオーナーに代わり、リソースサーバーにアクセスを試みますが、アクセスを行うにはユーザーの許可が必要です。
例:ユーザーがSNSアカウントを使ってサインインする時に利用するサードパーティアプリや、フィットネスアプリがユーザーのGoogleカレンダーと同期するためにGoogleにアクセスをリクエストするケースなどです。
役割:リソースオーナーからアクセスの許可を得て、認可サーバーからアクセストークンを取得します。このアクセストークンを使ってリソースサーバーにアクセスし、必要なデータにアクセスします。
認可サーバー(Authorization Server)
認可サーバーは、リソースオーナーの認証を行い、クライアントにアクセストークンを発行する役割を担います。認可サーバーはリソースサーバーと同一である場合もありますが、分離して設置されることも多いです。
例:GoogleのOAuth 2.0 認可サーバーや、FacebookのOAuthサーバーなどが該当します。これらの認可サーバーは、ユーザーがアクセス権を許可したかどうかを確認し、クライアントにアクセストークンを発行します。
役割:リソースオーナーの認証を行い、認証が成功した場合にクライアントへアクセストークンを発行します。アクセストークンはリソースサーバーにアクセスする際に使用され、一定の有効期限が設定されています。
OAuth2.0フローの流れ(Authorization Code Flow)
1,リクエスト:ユーザーがクライアント(例:フィットネスアプリ)で、「Googleでログイン」ボタンを押します。この操作により、クライアントは認可サーバー(GoogleのOAuthサーバー)にアクセス権のリクエストを送信します。
2,認可ページ表示:認可サーバーはリソースオーナー(ユーザー)に、クライアントが特定のリソース(例:Googleの連絡先やカレンダー)にアクセスする許可を与えるかどうかを尋ねる画面を表示します。
3,認可コードの発行:ユーザーが許可すると、認可サーバーは一時的な認可コードをクライアントに発行します。
4,アクセストークンの取得:クライアントは認可サーバーに認可コードを送り、アクセストークンをリクエストします。認可サーバーは、認可コードが有効であれば、クライアントにアクセストークンを発行します。
5,リソースサーバーへのアクセス:クライアントはアクセストークンを用いてリソースサーバー(GoogleのAPIサーバー)にアクセスし、リソース(例:ユーザーのGoogleカレンダーのデータ)を取得します。
参考サイト