日向夏特殊応援部隊

俺様向けメモ

OAuth Core 1.0 Revision A (2)

d:id:ZIGOROu:20090811:1250008682 の続き。

パラメータ

5. Parameters の辺りの話。

Consumer のリクエストパラメータ

以下のいずれかで。

  1. Authorization ヘッダにぶち込む (OAuth HTTP Authorization Scheme)
  2. application/x-www-form-urlencoded 形式の POST
  3. QUERY_STRING

将来的な拡張を見越して Authorization ヘッダは使うべきじゃない。

SP のレスポンスパラメータ

こんな感じ。

oauth_token=ab3cd9j4ks73hf7g&oauth_token_secret=xyz4992k83j47x0b
OAuth HTTP Authorization Scheme

リクエストヘッダに Authorization ヘッダを用いて、レスポンスヘッダに WWW-Authenticate ヘッダを用いる事によって OAuth のパラメータのやりとりする方式。

リクエストに使う Authorization ヘッダはこんな感じになる。

Authorization: OAuth realm="http://sp.example.com/",
oauth_consumer_key="0685bd9184jfhq22",
oauth_token="ad180jjd733klru7",
oauth_signature_method="HMAC-SHA1",
oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
oauth_timestamp="137131200",
oauth_nonce="4572616e48616d6d65724c61686176",
oauth_version="1.0"
  • パラメータ用のエンコーディングして
  • key-value は = で対応して
  • ', ' でセパレート
  • オプションで realm もつける

でレスポンスの時はこんなのを SP が付けてくる。

WWW-Authenticate: OAuth realm="http://sp.example.com/"

OAuth を用いた認証

6. Authenticating with OAuth の辺りの話。

ユーザーの Credential を用いる事無く、Consumer がユーザーの代わりに SP の Protected Resources にアクセスする為に二つの Token を用いると。

Request Token
ユーザーに Protected Resources へのアクセス認可を求める為に Consumer によって用いられる値で、その認可が得られたら Access Token へと交換する為に用いられる。適切な有効期間を設定した方がいい。
Access Token
ユーザーの代わりに SP の Protected Resources にアクセスするために Consumer によって用いられる値。Access Token はアクセス可能な Protected Resources に制限があるかもしれないし、有効期間にも制限があるかもしれない。ユーザーによって無効にされる場合もある。

で、OAuth の Authentication メカニズムはざっくり言えば3つのステップ。

  1. Consumer がユーザーから未認可の状態の Request Token を SP から得る
  2. User が Request Token を認可する
  3. Consumer は SP とユーザーによって認可された Request Token を Access Token に交換する

って感じ。