目次
OAuthとは(オーオース)
OAuthとは、異なるシステム間でデータや機能へのアクセス権限の許可を行う仕組みです。
例えば、ある利用者が「Aサービス」と「Bサービス」に加入している場合、各サービスのリソース(機能や保管しているデータなど)は利用者本人しか利用することはできません。
次の図のように「Aサービス」のリソースを利用できるのは 利用者本人。そして「Bサービス」も同様に「Bサービス」のリソースを利用できるのは 利用者本人です。
OAuthは、この異なるサービス間のリソースへのアクセス権限を付与することができる仕組みであり、OAuthにより権限の許可を付与することで、本来であれば利用することができない、他サービスのリソースを連携してもらうことができます。
上記はOAuthにより他サービスの情報を提供してもらう際のイメージ図です。このようにOAuthを利用することで、異なるシステム間での情報連携が可能です。
現在の最新バージョンであるOAuth 2.0では、次の4種類のロール(役割)が存在します。
名称 | 説明 |
リソースオーナー(resource owner) | 保護されたリソースへのアクセスを許可する役割。リソースオーナーが人間の場合はエンドユーザーと呼ばれる。 |
リソースサーバ (resource server) | 保護されたリソースを管理。 アクセストークンを用いた保護されたリソースへのリクエストを受理してレスポンスを返す役割。※上記図の例では「Bサービス」 |
クライアント (client) | リソースオーナーの認可を得て、リソースオーナーの代理として保護されたリソースに対するリクエストを行う役割。※上記図の例では「Aサービス」 |
認可サーバ (authorization server) | リソースオーナーの認証とリソースオーナーからの認可取得が成功した後、アクセストークンをクライアントに発行する役割。 |
スポンサーリンク
OAuthの仕組み
[手順1]リソースオーナーに対して許可を要求
まず始めにクライアントはリソースオーナーに対して許可の要求をします。上記図では認可サーバを経由し許可の要求を依頼しているが、直接要求することも可能です。
[手順2] リソースオーナーから「認可グラント」を受け取る
リソースオーナーに許可されたクライアントは「認可グラント」と呼ばれるリソースオーナーからの認可を現す情報を受け取ります。
[手順3] 認可サーバに対してアクセストークンを要求する
リソースオーナーに許可されたクライアントは、認可サーバに対して「認可グラント」を提示し、リソースサーバへのアクセスするために必要な「アクセストークン」を要求します。
[手順4] 認可サーバから「アクセストークン」を受け取る
認可サーバはクライアントからの「認可グラント」の正当性を確認し、「認可グラント」が正当であれば「アクセストークン」を生成し、クライアントへ発行します。
[手順5] リソースサーバへリソース提供の要求を行う
クライアントは、リソースサーバにリソース提供の要求を行います。この時、認可サーバから発行された「アクセストークン」も一緒に送ります。
[手順6] クライアントにリソースを提供する
リソースサーバは、クライアントから送られてきた「アクセストークン」の正当性を確認し、正当であればクライアントからの要求を受け入れ、リソースを提供します。