OAuth 2.0の概要

Eran がエントリ書いてました。
http://hueniverse.com/2010/05/introducing-oauth-2-0/
今回の内容は翻訳ではありません。
読みながら感じたことを書き連ねたものです。

■ なぜ新しいバージョンを考え始めたのか?OAuth 1.0aの課題

Eranは3つのポイントを挙げています。

  • Authentication and Signatures

OAuthの実装にわずかでも関わった開発者が感じるのは、署名が面倒だということではないでしょうか?
twitterBasic認証からOAuth/xAuthへの移行に苦労されている開発者の方もいると思いますが、やっぱり工数かかりますよね。
(まぁ、それでも独自でSP達が全部考えた仕様にかなり作りこんで対応するよりは、まだましかとおもいますけど?)

これを、HTTPSを使ってSecretそのままでとことん簡単にしよう!ってのがOAuth WRAPだったりします。
が、言い出しっぺのFacebookはいつのまにかOAuth 2.0の仕様にのっとっていたりします。

  • User Experience and Alternative Token Issuance Options

AccessTokenを取得するまでの流れをフローと読んでいます。
twitterのOAuthの普及状況でもわかるとおり、Webアプリに比べてClientアプリなどではまだまだフローの最適化が行われているとは感じることもあります。
一方、Facebook Connectは以前から、様々な環境でFacebookのデータにつながる/データを使う仕組みがありましたねと。

  • Performance at Scale

OAuthで最終的にデータにアクセスする際にAccessTokenを使うわけですが、
"誰が"、"誰の"、"どのデータに"、"いつまで"アクセスしていいのかを含み、SPはその有効性を全てのAPIアクセスで確認しなければなりません。
これ、大きなSPだとけっこう大変なんじゃないですかと。
また、そんなTokenの有効期限がアフォみたいに長いのはセキュリティの観点からも(署名してるとはいえ)盗まれた時のリスクとか大きいんじゃないの?
なんてことも言われていました。

■ OAuth 2.0ではこうなる!

□ 6 New Flows

以下のようなパターンを考えて、Access Token取得までの流れを定義しています!

  • User-Agent Flow : JSで処理するようなUA上で処理が完結する
  • Web Server Flow : 前からあるサーバ間の直接通信が可能なWebアプリが使う
  • Device Flow : いわゆるクライアントアプリ用。ここが今後の課題だと思う
  • Username and Password Flow : twitterのxAuthみたいなもの。定義しちゃうのか。。。
  • Client Credentials Flow : これは、2leggedかな
  • Assertion Flow : SAMLみたいな

OAuth WRAPあたりのアイディアが入って、すっきりしているものもあります。

□ Bearer tokens

一意なSecretがないTokenのことですね。
User-Agent Flow中心に使われるのでしょう。
FacebookのJSフローやtwitterの@anywhereのAccess Tokenはこの形式ですね。

□ Simplified signatures

シンプルにしました!らしいです。実際どうなっているかというと、
Signature Base Stringが"タイムスタンプ","nonce","ハッシュの形式","HTTP method","hostname+port","URI"で、それをhmac_sha256すればいいのです。

□ Short-lived tokens with Long-lived authorizations

Y!(米も日も)が導入しているOAuth Session Extensionのように、Refresh Tokenを用いたAccess Token更新がWRAPあたりからオプションで入りました。
OAuth 2.0でもオプションで入るでしょう。そしてtwitterFacebookは使わないでしょう。

□ Separation of Roles

これは、SPがAuthZも受けるしリソースも持っているっていう定義だったのを、定義の時点で分離したってことですね。

■ OAuth 2.0はいつ決まるのか

Fixは年末でしょうかね。
OAuthはOpenSocialとの絡みとかもあるので、慎重にやってもらいたいですね。

■ 動画

Joseph Smarrのコメントにあるように、これも見る価値ありそうですね。
http://www.thesocialweb.tv/blog/2010/05/f.html

■ 次のネタ

今のドラフト時点のOAuth 2.0仕様解説かな。