by shigemk2

当面は技術的なことしか書かない

OAuthとは

第1回 OAuthとは?―OAuthの概念とOAuthでできること:ゼロから学ぶOAuth|gihyo.jp … 技術評論社

OAuthは,以下の特徴を持つ「認可情報の委譲」のための仕様である。「おーおーす」と読む。

  • あらかじめ信頼関係を構築したサービス間で
  • ユーザの同意のもとに
  • セキュアにユーザの権限を受け渡しする

ということ。

OAuthに対応したサービスでは,ユーザが外部サービスにパスワードを教えることなく、
認可情報の委譲が可能である。

つまり、
パスワードを使わずにサービスの
情報の取得/追加/更新/削除 が可能になるというわけだ。

OAuthで出てくるアクターは以下の3つ。

  • OAuth Service Provider(以下Service Provider)ユーザの認可情報を第三者に渡すサービス OAuthの根幹で、TwitterとかGoogleとかが提供している
  • OAuth Consumer(以下Consumer) Service Providerから認可情報を受け取り,ユーザに代っていろいろな情報にアクセスしたり変更/追加を行ったりするサービス Twitterのアプリとか。
  • User UserはService ProviderがConsumerに認可情報を渡すことを許可したり,すでに受け渡した認可情報を無効にするといったことができる ユーザー。そのまんま。

流れとしては、

  1. UserがConsumerに,Service Providerから認可が必要な情報へのアクセス権を取得するように指示
  2. ConsumerはバックグラウンドでService Providerにアクセスし,未認可のRequest Tokenを取得
  3. ConsumerはUserをService Providerにリダイレクトさせて、Consumerは未認可のRequest TokenをURL Parameterに付加
  4. UserはService Provider上でConsumerへのアクセス権委譲を許可 この際Service Providerは未認可のRequest Tokenを認可済とする
  5. Service ProviderはUserをConsumerにリダイレクトさせる この際Service Providerは認可済のRequest TokenをURLに含める
  6. ConsumerはバックグラウンドでService Providerと通信を行い,認可済のRequest Tokenを実際のアクセス権を示すAccess Tokenと交換
  7. Consumerは6)で得られたTokenを利用して,特定の情報にアクセス

重要なのは、トークンのやりとりであり、Service ProviderがUserからのトークンを認可済みにしたりアクセス権を有するトークンにしたりすることである。

Twitterのアカウントがハックされた人が外部アプリの作者にサービスの全停止を要求 - Togetter

つまり、この流れでいうと、アプリ作成者に非はなく、アカウントのパスワードが盗まれたのはTwitterかユーザーのアカウント管理に問題があったのではないかと…