OAuth(1.0)については、ゼロから学ぶOAuthとかAPIアクセス権を委譲するプロトコル、OAuthを知るあたりで色々と説明されているけど、忘れた時にふと読み返すには少し記事が長いと思う。
今回は、ざっくりとOAuthとは何か、その承認プロセスはどんな感じかを自分なりに短くまとめてみる。
何をするためのものか
例えば、自分のGoogleカレンダーを見やすく表示してくれるアプリケーションがあったとする。これを利用するには、アプリケーションの入手の他に、Googleカレンダーデータの取得が必要になる。
Googleカレンダーデータの取得を実現する一番簡単な方法は、アプリケーションにGoogleのIDとパスワードを設定すること。でも、IDとパスワードをアプリケーションに設定するのがちょっとイヤな場合がある。Webアプリケーションなどがそれ。
そんな時、OAuthを使うとGoogleのIDとパスワードをアプリケーションに教えることなく、やりたいことが実現できる。
OAuthのプレイヤー
OAuthでは、下記3つのプレイヤーが鍵になってくる。
サービスプロバイダー
GoogleやTwitterなどに代表されるサービスプロバイダーは、OAuthにおいて最も重要な役割を担っている。エンドポイントの提供、各種トークンやベリファイアの発行を行う。
コンシューマ
サービスプロバイダーが提供するAPIを利用してユーザーのデータを扱うアプリケーション。
ユーザー
アプリケーション利用者であり、サービスプロバイダーに会員登録をしている。
OAuthで使用する要素
OAuthを実装するにあたって基本的な要素を理解する必要性がある。
トークン(token/token secret)
トークンとトークンシークレットで1組の鍵データであり、コンシューマトークン、リクエストトークン、アクセストークンの3種類が存在する。
コンシューマトークン(consumer token/consumer token secret)
サービスプロバイダーがアプリケーションに対して発行するもの。アプリケーションを識別するために利用する。
リクエストトークン(request token/request token secret)
リサービスプロバイダーがアプリケーションに対して一時的に発行するもの。ユーザーがアプリケーションを承認するプロセスでのみ利用する。
アクセストークン(access token/access token secret)
サービスプロバイダーがアプリケーションに対して発行するもの。ユーザーデータにアクセスし放題になる重要情報。アクセストークンさえあればOAuthを利用した各種APIの利用が可能になる。
ベリファイア(verifier)
ユーザーがアプリケーションを承認するプロセスの最終段階で利用するもの。PINコードと呼ばれたりする。サービスプロバイダーがユーザーに対して発行するものであり、さらにユーザーがアプリケーションに渡し、最後にアプリケーションがリクエストトークンとセットでサービスプロバイダーに投げつける。
エンドポイント(Endpoint)
サービスプロバイダーが公開しているOAuth認証プロセスに必要な機能を備えたURI。リクエストトークンを発行するためのエンドポイント、ユーザーが承認を行うためのエンドポイント、アクセストークンを発行するためのエンドポイントが存在する。
OAuth 1.0 API Reference(Google)とかTwitter REST API Method: oauth request_token(Twitter)に書いてある。
承認プロセス
まず、アプリケーションの登録
アプリケーションの登録方法はサービスプロバイダーによって違うけど、基本的には専用のWebサイトでアプリ登録を行い、コンシューマトークンを得るという作業になる。
Googleの場合
ここにアクセスし、画面の指示に従う。が、完全なクライアントアプリケーションを作りたいよーという場合には、すっとばしてOK。コンシューマトークンには"anonymous"という文字列を利用すれば良い。
Twitterの場合
ここにアクセスし、画面の指示に従う。Twitterの場合はWebアプリケーションでもクライアントアプリケーションでも同じ。
リクエストトークンの取得
リクエストトークンを発行するためのエンドポイントに対して、必要なパラメータを設定したHTTPリクエストを発行し、レスポンスとしてリクエストトークンを得る。
ベリファイアの取得
ユーザーが承認を行うためのエンドポイントへユーザーにアクセスしてもらう。その際、oauth_tokenパラメータとして先に取得したリクエストトークンを付与する。ユーザーが承認を行うとベリファイアを得ることができる(サービスプロバイダのサイト上に表示されるか、指定したURLへのリダイレクトかのいずれか)。
アクセストークンの取得
アクセストークンを発行するためのエンドポイントに対して、必要なパラメータを設定したHTTPリクエストを発行し、レスポンスとしてアクセストークンを得る。
終わり
この長い旅路を終えて得たアクセストークンが、OAuthを認証方式に採用しているAPIを利用するために必要なものになる。
0 件のコメント:
コメントを投稿