ゼロから学ぶOAuth

第1回 OAuthとは?―OAuthの概念とOAuthでできること

この記事を読むのに必要な時間:およそ 2.5 分

OAuthを体験してみる

smart.fmでGoogleのOAuthを使う

さて,それでは早速UserとしてOAuthを利用してみましょう。smart.fmでは,すでにsmart.fmにいる友達を探す際にGmailとYahoo! Mailのアドレス帳にアクセスするため,OAuthを利用しています。そこで今回はsmart.fmの友達検索を通じて,OAuthを体験することにしましょう。smart.fmのアカウントはお持ちですか?お持ちでない方はユーザ登録を。

図2 smart.fm

図2 smart.fm

  1. smart.fmのGmail友達紹介ページにアクセス
  2. 「Googleへ」と表示されているリンクをクリック

今あなたはGoogleのサイトにいて,Googleがsmart.fmにアドレス帳へのアクセス権を渡してよいかどうか,確認を求めているでしょう。⁠Grant access」をクリックしてアクセス権の委譲を許可すると,smart.fmがバックグラウンドであなたのアドレス帳にアクセスし,既にsmart.fmを利用している友達や,招待可能な友達などをリストアップして提示します。⁠Deny access」をクリックすると,1)の画面に戻ります。

ここで与えた認可情報は,smart.fm側で「メールアカウント認証を削除」というリンクをクリックするか,Googleの認証済みのウェブサイトからsmart.fm(記事公開時点ではまだwww.iknow.co.jpと表示されます)を取り除けば無効になり,もう一度1)からやりなおすことができます。アクセス権委譲の許可/拒否をそれぞれ体験してみてください。

何が行われていたのか?

上記のフローの裏では,以下のようなやり取りが行われています。
⁠User : あなた,Consumer : smart.fm,Service Provider : Google)

図3 smart.fmでの認証フロー

図3 smart.fmでの認証フロー

0.ConsumerはService ProviderからあらかじめOAuth利用許可を得る
このステップは,具体的にはService ProviderにConsumer登録を行い,Consumer KeyとConsumer Secretという値を取得することで行います。
1.UserがConsumerに,Service Providerから認可が必要な情報へのアクセス権を取得するように指示する。
前述のGoogle OAuthの例では,認可が必要な情報はGmailのアドレス帳,アクセス権取得の指示はユーザがsmart.fmの「Googleへ」というリンクをクリックすることに相当します。
2.ConsumerはバックグラウンドでService Providerにアクセスし,未認可のRequest Tokenを取得する
第2,3回目のConsumerの実装で詳しく扱います。
3.ConsumerはUserをService Providerにリダイレクトさせる。この際Consumerは未認可のRequest TokenをURL Parameterに付加する
第2,3回目のConsumerの実装で詳しく扱います。
4.UserはService Provider上でConsumerへのアクセス権委譲を許可する。この際Service Providerは未認可のRequest Tokenを認可済とする
Google上で「Grant access」をクリックすることに相当します。
5.Service ProviderはUserをConsumerにリダイレクトさせる。この際Service Providerは認可済のRequest TokenをURLに含める
最終回のService Providerの実装で詳しく扱います。
6.ConsumerはバックグラウンドでService Providerと通信を行い,認可済のRequest Tokenを実際のアクセス権を示すAccess Tokenと交換する
第2,3回目のConsumerの実装および最終回のService Providerの実装で詳しく扱います。
7.Consumerは6)で得られたTokenを利用して,特定の情報にアクセスする
第2,3回目のConsumerの実装で詳しく扱います。

0.は前もって行われているので,今回あなたが経験したのは1.と4.です。Access Token取得後は,ユーザが明示的にそのAccess Tokenを無効にするか,Access Tokenにあらかじめ設定された有効期限をすぎない限り,Consumerは何度でも情報にアクセスすることができます。

このフローについてもっと詳しく知りたい方は,OAuth Core 1.0のSpec第6章をご覧ください。

まとめ

さて,第1回はOAuthの概念を説明しました。第1回では以下の3点をしっかり押さえていただければ,次の記事もご理解いただけると思います。

  1. OAuthを用いてsmart.fmにGmailのアドレス帳へのアクセス権限を与えた
  2. OAuth Service Provider,OAuth Consumer,Userという登場人物
  3. Request TokenとAccess TokenというTokenベースの認可情報のやりとりと,そのおおまかなフロー

著者プロフィール

真武信和(またけのぶかず)

Cerego Japan Inc.で働くWebエンジニア。

smart.fmで外部APIとの連携機能(OAuth Consumer)の開発に携わるほか、smart.fm API(OAuth Service Provider)の開発にも携わっている。

URL:
http://matake.jp/
http://smart.fm/users/matake

コメント

コメントの記入