メメメモモ

プログラミング、筋トレ、ゲーム、etc

OAuthの概要メモ

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を用いた場合の大まかな流れは下記のようになります。

  1. Userがクライアントソフトからツイートしようとする
  2. クライアントソフトはOAuthでUserのtwitter情報を取得しようとする
  3. twitterは、クライアントソフトにUserの認可情報を渡して良いかどうかを、Userに尋ねる
  4. Userが許可すると、twitterはクライアントソフトに認可情報を渡す
  5. クライアントソフトは、認可情報を基にツイートをtwitterの方に送る


と行った感じになります。このプロセスでは、ユーザがクライアントソフトにパスワードを入力する作業がありませんでした。それでも無事に、クライアントソフトからツイートできるようになりました。
ただし、OAuth Service Providerであるtwitterに、あらかじめクライアントソフトをOAuth Consumerとして登録する必要があります。


twitterの場合、下記のようなページがあります。
http://twitter.com/oauth_clients


このようにして、パスワード入力なしで、サービス間認可機能の連携を行なえるようにするのがOAuthです。