OAuth認可の流れ
RFC6749 4は、4つのフローを定義している
OAuthのGrant Type
Authorization Code Grant
Client Credentials Grant
Implicit Grant (deprecated)
Resource Owner Password Credentials Grant (deprecated)
Access Token再発行のためのフロー
Refreshing an Access Token
4つのロール
Resource Owner
e.g. user
認可サーバー
Client (OAuth)
e.g. 黒歴史クリーナー
Protected Resource
e.g. Twitter
簡易的な説明
https://gyazo.com/4a78736aa0a2390cfe947e6aaddd68bf
① Resource Owner(user)がClient (OAuth)に連携を要求
「自分の代わりに、他のサービスと連携してください」のような旨を伝える感じ
② Client (OAuth)が認可サーバーにaccess tokenを要求
権限をくださいと要求する
⑥で使うためのtokenを要求する
③ 認可サーバーがResource Ownerに権限を付与して良いかを問う
④ Resource Ownerが認可サーバーに権限付与を許可する
権限を与えることの承諾をする
要求されたものより減らして許可することもできる
⑤ 認可サーバーはClient (OAuth)にtokenを返す
⑥ Client (OAuth)はtokenを使って、Protected Resourceにrequestを発行
これが本来の目的
②⑥部分のやりとりの仕様がOAuth
RFC6749
上の①~⑥は、OAuthを使った認可
①~⑤によって、Resource OwnerからClientに権限が委譲されている
だから⑥でClientはReseouce Ownerに代わってProtected Resourceとやりとりできる
「簡易的な説明」は細かいところをだいぶ端折っている
例えば、
①のresponseは何になるのか?
認可サーバーはどうやってuserとやりとりするのか?
認可サーバーとProtected Resourceはどうやってやりとりするのか?