OAuthとは
OAuthとは、サービス間で認可情報を受け渡しするための仕組みです。
例えば、あるクライアントソフトからツイートする場合を考えます。ツイートするためには、まずtwitterにログインする必要があります。この時にログインパスワードの入力が必要です。
ですので、クライアントソフトを介してツイートする場合でも、ログインパスワードを入力する必要が出てきます。
ただ、twitterのサイト以外で、自分のログインパスワードを入力するのは不安ですね。クライアントソフトがWebアプリケーションだと、第三者にパスワードを教えてしまう事になってしまいます。これでは、クライアントソフトが利用できません。
OAuthは、ログインパスワードを入力せずに、クライアントソフトからツイートできるようにする仕組みです。
OAuthの処理の流れ
まずOAuthの処理には、3つの登場人物がいます。
- OAuth Service Provider
- ユーザの認可情報を第三者に渡すサービス
- OAuth Consumer
- Service Providerから認可情報を受け取り、ユーザに代わっていろいろな情報にアクセス/変更/追加を行なうサービス
- User
- Service ProviderがConsumerに認可情報を渡すことを許可する/すでに受け渡した認可情報を無効にする
概要での例で言うと、twitterが「OAuth Service Provider」、クライアントソフトが「OAuth Service Provide」、クライアントソフトを使用するユーザーが「User」ということになります。
OAuthを用いた場合の大まかな流れは下記のようになります。
- Userがクライアントソフトからツイートしようとする
- クライアントソフトはOAuthでUserのtwitter情報を取得しようとする
- twitterは、クライアントソフトにUserの認可情報を渡して良いかどうかを、Userに尋ねる
- Userが許可すると、twitterはクライアントソフトに認可情報を渡す
- クライアントソフトは、認可情報を基にツイートをtwitterの方に送る
と行った感じになります。このプロセスでは、ユーザがクライアントソフトにパスワードを入力する作業がありませんでした。それでも無事に、クライアントソフトからツイートできるようになりました。
ただし、OAuth Service Providerであるtwitterに、あらかじめクライアントソフトをOAuth Consumerとして登録する必要があります。
twitterの場合、下記のようなページがあります。
http://twitter.com/oauth_clients
このようにして、パスワード入力なしで、サービス間認可機能の連携を行なえるようにするのがOAuthです。