OAuthの概要
OAuthとは- ユーザーのクレデンシャルを外部にさらすことなく、
APIへのアクセス権を別のアプリケーションに譲渡するための、
認証プロトコルの標準仕様。 - IDとパスワードの代わりにトークンを渡して、
別のリソースへアクセスさせる
OAuthのフロー概要
まず、OAuthには登場人物が3人いる。- ユーザ
- サービスプロバイダ
(ユーザの認可情報を第三者に渡すサービス)
Google、Yahoo!、twitterなど - コンシューマ
(サービスプロバイダから認可情報を受け取り,
ユーザに代っていろいろな情報にアクセスしたり
変更/追加を行ったりするサービス)
仮にユーザをUさん、サービスプロバイダをSさん、コンシューマをCさんとすると、
OAuthは以下のようなフローになる。
U「ねえねえ、Cくん。
君はオンラインショッピングのサービスを提供しているよね」
C「そうだよ」
U「いいサービスだと思うから、友達に紹介したいんだけど」
C「お、いいよ。誰に紹介したいの?」
U「Sくんのアドレスブックサービスに友達1000人くらい登録してるんだ。
その人たち全員に紹介したい。
Sくんのサービスで使っている僕のユーザ名とパスワードを教えるから
友達情報を取ってきてよ。
これから自由に使っていいし」
C「個人情報だだ漏れじゃないか!
それに君がパスワード変えたときはどうするの?
ちょっと待ってて。Sくんと調整してみるよ」
C「Sくん。
僕のサービスと君のアドレスブックサービスを連携させて使いたい、
っていう人がいるんだけど」
S「個人情報入っているサービスじゃん。
アドレスブックサービスを使っていいか、
Cくんじゃなくて直接本人に確認したいな。
その人にこの割り符を持たせて、こちらに来るように言ってくれないか」
C「分かった」
C「という訳で、ちゃんとSくんに対して直接許可を与えて欲しい」
U「OK」
U「Sくん。
Cくんに僕のアドレスブックに入っている友達情報を教えて欲しい。」
S「その前にきみは誰だ?」
U「Uだよ」
S「なるほど。。
Uくん、君のアドレスブックの情報をCくんに教えていいんだな?」
U「うん」
S「割り符は? Cくんに渡しているはずだけど」
U「持ってきたよ」
S「おお、ぴったり合うな。分かった、じゃあCくんに教えるよ。
Cくんに、この許可証を渡してくれ。
Cくんがきみの個人情報にアクセスできるという許可証だ。
ちなみに1時間だけ有効だから。」
U「分かった。ありがとう」
U「Cくん。Sくんに許可を与えたから、
Sくんのアドレスブックサービスにアクセスしてよ。
許可証を渡されたから、これを持ってね!」
C「OK」
C「Sくん、君のサービスを使わせて欲しい」
S「ん?」
C「許可証も持っているよ」
S「なになに。。よし、いいよ。
使っていいよ」
C「ありがとう!
Uくんの友達の情報、ゲットだぜ!
早速この人たち全員に紹介しよう」
話が長くなりましたが、キモとしては、
Cくんは、
SくんのサービスでUくんが使っている
ユーザ名やパスワードを全く知らずに、
SくんのサービスからUくんの個人情報を知ることができた
ということです。
0 件のコメント:
コメントを投稿