OAuth Core 1.0 Rev A (Draft 1)

http://farm3.static.flickr.com/2074/1529124811_aad3ecabf6_o.png

ドラフトが上がってきたようです。
http://oauth.googlecode.com/svn/spec/core/1.0a/drafts/1/oauth-core-1_0a.html

OAuth Core 1.0をじっくり見たことのある人にとってはDiffのほうがわかりやすいかもということで、Diffはこちらです。
Google Code Archive - Long-term storage for Google Code Project Hosting.
wiki : OAuth Session Fixation Advisory - r-weblifeにある、OAuth / Signed Callback URLsの方になったということでしょうか。
OAuth実装してる人たち、心の準備はいいでしょうか?

ポイントとなるパラメータは次の2つです。

  • oauth_callback
  • oauth_verifier

■ oauth_callback

Current : User Authorization取得時に戻り先URLを含む

oauth_callback:
OPTIONAL. The Consumer MAY specify a URL the Service Provider will use to redirect the User back to the Consumer when Obtaining User Authorization (Obtaining User Authorization) is complete.

Rev A : Request Token取得時のRequestにUser Authorization取得時の戻り先URLを含む

oauth_callback:
An absolute URL to which the Service Provider will redirect the User back when the Obtaining User Authorization (Obtaining User Authorization) step is completed.
If the Consumer is unable to receive callbacks, the parameter value MUST be set to oob (case sensitive).

UserAuthorization取得時のURLを改ざんされないように、あらかじめ戻り先URLをConsumer - SP間で共有しておく。
oobって何ですか?

■ oauth_verifier

新しく追加されたパラメータです。

In order to ensure that the User granting access is the same User returning back to the Consumer to complete the process,
the Service Provider MUST generate a verification code: a non-guessable value passed to the Consumer via the User and REQUIRED to complete the process.

  • UserのAuthorizationを取得したあとにcallback_urlに付加される
  • Access Token取得時のRequestにこのoauth_verifierを含むことで、同意したUserとConsumerに戻されたUserが同じことを確認する

■ for Client Apps

If no callback URL was provided (the value of the oauth_callback parameter was oob, case sensitive), the Service Provider MUST display the value of the verification code to the User and instruct the User to manually inform the Consumer that authorization has completed and provide the Consumer with the verification code.
If the Service Provider knows a Consumer to be running on a mobile device or set-top box, the Service Provider SHOULD ensure that the verifier value is suitable for manual entry.

callback URLが提供されなかったとき(oobだったとき)は、Userがverification codeをClient Appsなどに伝える。
Consumerやset-top boxで動いていることをSPが知っている場合は、Userが手動で入力できるように空気読んでsuitableな値にする。
oobって何ですか?

■ Security Issueは完全になくなった?

Client Appの場合にverification codeを含む必要が出てきたので、今までの脆弱性をつくためにはソーシャルエンジニアリングにより"verification code"も盗む必要がある。
攻撃者がめんどくさいことが大事ですね。
Userには"verification code"は大事に扱えと啓蒙する必要がありそうです。

■ Sample Request/Response

◆ Appendix A.2. Obtaining a Request Token

  • Request

https://photos.example.net/request_token?oauth_consumer_key=dpf43f3p2l4k3l03
&oauth_signature_method=PLAINTEXT
&oauth_signature=kd94hf93k423kf44%26
&oauth_timestamp=1191242090
&oauth_nonce=hsu94j3884jdopsl
&oauth_version=1.0
&oauth_callback=http%3A%2F%2Fprinter.example.com%2Frequest_token_ready

callback URLが含まれています。

  • Response

oauth_token=hh5s93j4hdidpola&
oauth_token_secret=hdhd0244k9j7ao03

現行と同じです。

◆ Appendix A.3. Requesting User Authorization

  • Request

http://photos.example.net/authorize?oauth_token=hh5s93j4hdidpola

Request Tokenだけ

  • Response

http://printer.example.com/request_token_ready?
oauth_token=hh5s93j4hdidpola&
oauth_verifier=hfdp7dh39dks9884

oauth_verifierがついている。

◆ Appendix A.4. Obtaining an Access Token

https://photos.example.net/access_token?
oauth_consumer_key=dpf43f3p2l4k3l03
&oauth_token=hh5s93j4hdidpola
&oauth_signature_method=PLAINTEXT
&oauth_signature=kd94hf93k423kf44%26hdhd0244k9j7ao03
&oauth_timestamp=1191242092
&oauth_nonce=dji430splmx33448
&oauth_version=1.0
&oauth_verifier=hfdp7dh39dks9884

oauth_verifierを含む。

  • Response

oauth_token=nnch734d00sl2jdk&
oauth_token_secret=pfkkdhi9sl3r4s00

いままでどおり。

正式版になるまではまだ修正が入るかもしれませんね。
要チェックです。