OAuthの理解

Twitter4Jを使ってSpiderでも作ろうかと思ったけど、OAuth認証のところがいまいちよくわからなかったので、
丁度良い機会なのでちゃんと学習しました。


OAuth認証とは何か?
認可情報の部分的な委譲を可能にする認証方法
例えば、あるサービスの機能の一部だけを外部のサービス・アプリからアクセスできるようにする仕組みです。
全ての権限(ID、パスワード)を外部のサービス・アプリに委譲してしまうと、パスワード変更、漏洩の恐れがありますが、
この仕組みを用いることで安全に外部のサービス・アプリを使用することができます。


OAuth認証のフロー
OAuth認証の一番わかりづらいところである登録から利用までをフロー化しました。


まず、登場人物で分けると「ユーザー」、「Consumer」、「ServiceProvider」の3種類があります。
「ユーザー」はサービス・アプリを利用する人のことです。
「Consumer」は「ServiceProvider」を利用する外部のサービス・アプリ、つまり今回作るアプリです。
「ServiceProvider」はサービスを提供する側、つまりTwitterです。


次にタイミングで分けると「アプリ開発時」、「最初の登録時」、「登録後の利用」の3種類があります。
「アプリ開発時」は今回作るアプリをTwitter側に登録します。それによりConsumerKey、ConsumerSecretを取得します。
「最初の登録時」は今回作るアプリに対してユーザーの同意を得て、認可します。認可した証拠としてAccessTokenを取得します。
「登録後の利用」は取得したAccessTokenを使ってTwitterから情報を取得します。


「アプリ開発時」、「最初の登録時」は1度きりでAccessTokenを取得してからは、そのAccessTokenの有効期限が切れるまで
Twitterにアクセスすることができます。
ちなみにTwitterのAccessTokenの有効期限はないみたいです。