ritou
注意
• 本スライドは2009年5~6月ぐらいに作られたも
  ので最新の仕様と異なる可能性があります。
背景、目的
OpenIDとOAuth
• OpenID,OAuthは目的、仕様が異なる。拡張を
  無視するとやってることはこんな感じ。
 – OpenIDとは?
   ユーザー識別子を渡す
 – OAuthとは?
   ユーザーデータにアクセスするた...
OpenID Flow
                               • 例 : OpenIDでログイン
                                    1.   UserはOpenID 入力 or
  ...
OAuth Flow
                              • 例 : アドレスブックデータの
                                インポート
               1         ...
UXの重複
• OpenIDの認証要求とOAuthの認可要求のUX
  は類似
 – RP=Consumerの場合は2回ユーザー同意が必要
 – OP=SPの場合は同じ相手に対して2回ユーザー同
   意が必要
Hybrid Protocolの目的
• OpenIDの認証処理とOAuthの認可処理を統
  合することによるUX改善
 – UX改善はOpenID, OAuthにおける今年の重要な
   テーマ
Hybrid Flow
            RP and
                           • 例 : OpenIDでログインしアドレ
           Consumer          スブックのデータをインポー...
拡張仕様の策定
• 既存の仕様を利用しつつプロトコルを統合す
  るための拡張仕様を策定中
 OpenID OAuth Extension (draft)
• 多くの企業がOpenID,OAuthを導入している
 – 互いの仕様への影響をおさえ...
使いどころ
Plaxo and Google
• Plaxo上でgmailユーザーをInviteするときに
  Hybrid Protocolを利用
 – アカウントの紐づけにOpenIDを用いる
 – Contacts Listの取得を行う


 Ope...
MySpace
• MyURL(自分のプロフィールページ)をOpenID
  として利用できる
• Open SocialのRestful Protocolとして、OAuthに
  よるAPIを提供
  – プロフィール情報、フレンドリスト、ア...
画面比較 - Google -
OpenID           Hybrid
画面比較 - MySpace -
OpenID           Hybrid
OpenID + OAuth
• ユーザーの属性情報としてOAuthのリソース
  を利用
 – Contact List APIやProfile APIをSreg,AXのような属
   性取得のために利用


 OAuth対応APIが増えると...
OAuth + OpenID
• OAuth APIをメインに利用しているサービスの
  ID認証をOpenID対応
 – twitter,fireeagleなどソーシャル的要素を持つAPI
 – SP=OPのときはHybridを選択


 O...
OpenIDホワイトリスト対応
• OpenIDの仕様 : RPの登録不要
  – ホワイトリスト対応は未定義
  – 特にJPではセキュリティポリシーでSreg,AXなどで
    属性情報を提供できないOPが多い
• OAuth : Con...
拡張仕様
OpenID OAuth Extension (1)
• OpenIDの拡張仕様
• OpenIDの認証要求にOAuthの認可要求を付
  加する方法を定義
OpenID OAuth Extension (2)
• 追加された定義
  – Combined Provider
     • OP かつ SP : (例)Google, MySpace
  – Combined Consumer
    ...
OpenID
User                      Relying Party                        Provider
           Initiation
  OpenID入力フォームor OP候補...
User                        Consumer                      Provider

          SP候補を表示
            SPを選択
                  ...
共通の役割を持つパラメータ
• 戻り先URL
 – OpenID : return_to
 – OAuth : oauth_callback
 Hybrid Protocolではreturn_toの値を戻り先
 URLとして利用
Combined Consumerの識別、検証
• 識別方法
 – OpenID : realm/return_to
 – OAuth : Consumer Key
• 検証方法
 – OpenID : realm/return_toをDisc...
OAuth Request Tokenの扱い(1)
• Userの同意を得たことをConsumerに伝え、
  Access Tokenと交換するためのToken
• 認可要求時には、Request Tokenをクエリパ
  ラメータとして引き...
OAuth Request Tokenの扱い(2)
• OpenIDの対象はブラウザアプリ
 – assoc_handle,Signatureの値でセッション管理、
   遷移確認が可能


• Hybridでは事前のRequest Token...
Combined                           Combined
User                        Consumer                            Provider
     ...
Requesting Authentication Params
• OpenID
 openid.ns,openid.mode,openid.claimed_id,openid.id
 entity,openid.assoc_handle,o...
Responding Authentication Params
• OpenID
 openid.ns,openid.mode,openid.claimed_id,openid.id
 entity,openid.assoc_handle,o...
Obtaining Access Token
• OAuth : Access Token取得要求のパラメータ
 – 認可済のRequest Token
 – Request Tokenに対して一意なSecretの値は”空”


• OAuth...
Combined Consumerの実装
• OpenIDの認証要求にOAuth関連パラメータを
  追加
 – Extension namespace
 – Consumer Key
 – Scope(option)
• OpenID 認証応...
Combined Providerの実装
• 拡張サポートの明示
 – http://specs.openid.net/extensions/oauth/1.0
• OpenID認証ロジックにOAuthの認可ロジック
  を導入
 – Cons...
まだまだ難しいHybrid Protocol
• Hybridの使いどころ
 – Best Practiceを手探り状態
• 各SPのAPIが独自実装
 – Hybrid Protocolを導入しても、APIアクセス時の仕
   様が独自なため...
数年後のOpenID,OAuthの状況
• Combined Consumerの増加
  – 1つのアカウントでどこにでもログイン
  – 分散しているデータを効率的に利用
• Combined Provider同志がAPI対決
  – Ope...
関連リンク
• OpenID wiki : OpenID and OAuth Hybrid
  Extension
  – http://wiki.openid.net/OpenID-and-OAuth-
    Hybrid-Extensio...
Upcoming SlideShare
Loading in …5
×

0905xx Hybrid Memo

2,069 views

Published on

Hybrid理解用の2009年5-6月あたりのメモ。

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

0905xx Hybrid Memo

  1. 1. ritou
  2. 2. 注意 • 本スライドは2009年5~6月ぐらいに作られたも ので最新の仕様と異なる可能性があります。
  3. 3. 背景、目的
  4. 4. OpenIDとOAuth • OpenID,OAuthは目的、仕様が異なる。拡張を 無視するとやってることはこんな感じ。 – OpenIDとは? ユーザー識別子を渡す – OAuthとは? ユーザーデータにアクセスするためのCredentialを渡 す
  5. 5. OpenID Flow • 例 : OpenIDでログイン 1. UserはOpenID 入力 or 1 OP選択 2. RPはUserをOPにリダイレ クト 2 4 5 3. OPはUserに「RPにログイ Relying Party ンすること」について同 意を求める User 4. OPはClaimed IDとともに 3 UserをRPにリダイレクト 5. RPはUserを特定し、ログ イン処理完了 OpenID Provider
  6. 6. OAuth Flow • 例 : アドレスブックデータの インポート 1 1. UserはSPを選択 2. ConsumerはUserをSPに Consumer リダイレクト 3. SPはUserに「Consumer 2 4 にアドレスブックデータを 5 シェアすること」について 同意を求める User 4. SPはUserをConsumerに リダイレクト 3 5. ConsumerがUserの代わ りにSPのアドレスブック データにアクセス Service Provider (SP)
  7. 7. UXの重複 • OpenIDの認証要求とOAuthの認可要求のUX は類似 – RP=Consumerの場合は2回ユーザー同意が必要 – OP=SPの場合は同じ相手に対して2回ユーザー同 意が必要
  8. 8. Hybrid Protocolの目的 • OpenIDの認証処理とOAuthの認可処理を統 合することによるUX改善 – UX改善はOpenID, OAuthにおける今年の重要な テーマ
  9. 9. Hybrid Flow RP and • 例 : OpenIDでログインしアドレ Consumer スブックのデータをインポート 1. Userはインポート先の 1 Providerを選択 2. ConsumerはUserをProvider にリダイレクト 3. Provider はUserに 2 「Consumerにログインするこ 4 と、アドレスブックのデータを 5 シェアすること」について同 意を求める User 4. ProviderはUserをConsumer にリダイレクト 3 5. ConsumerはUserを特定しロ グイン処理を行い、アドレス ブックのデータにアクセスす る OP and SP
  10. 10. 拡張仕様の策定 • 既存の仕様を利用しつつプロトコルを統合す るための拡張仕様を策定中 OpenID OAuth Extension (draft) • 多くの企業がOpenID,OAuthを導入している – 互いの仕様への影響をおさえる – 開発者の負荷軽減
  11. 11. 使いどころ
  12. 12. Plaxo and Google • Plaxo上でgmailユーザーをInviteするときに Hybrid Protocolを利用 – アカウントの紐づけにOpenIDを用いる – Contacts Listの取得を行う OpenIDを用いた新規ユーザー登録フローに OAuthで取得できる情報を導入
  13. 13. MySpace • MyURL(自分のプロフィールページ)をOpenID として利用できる • Open SocialのRestful Protocolとして、OAuthに よるAPIを提供 – プロフィール情報、フレンドリスト、アクティビティ OpenID認証と同じタイミングでOAuthで提供 されるプロフィール情報にアクセス可能
  14. 14. 画面比較 - Google - OpenID Hybrid
  15. 15. 画面比較 - MySpace - OpenID Hybrid
  16. 16. OpenID + OAuth • ユーザーの属性情報としてOAuthのリソース を利用 – Contact List APIやProfile APIをSreg,AXのような属 性取得のために利用 OAuth対応APIが増えるとOpenIDの利用も活 性化 – Gmailアドレス+コンタクトリストの組み合わせはよ く利用されている?
  17. 17. OAuth + OpenID • OAuth APIをメインに利用しているサービスの ID認証をOpenID対応 – twitter,fireeagleなどソーシャル的要素を持つAPI – SP=OPのときはHybridを選択 OpenID RPへのOAuth API利用促進 – Yahoo!,Google, MySpace,...
  18. 18. OpenIDホワイトリスト対応 • OpenIDの仕様 : RPの登録不要 – ホワイトリスト対応は未定義 – 特にJPではセキュリティポリシーでSreg,AXなどで 属性情報を提供できないOPが多い • OAuth : ConsumerKeyによりConsumerを識別 – 細かいアクセス制限が可能 Hybridの認証要求に含まれるConsumer Key を用いたOpenIDのホワイトリスト対応が可能
  19. 19. 拡張仕様
  20. 20. OpenID OAuth Extension (1) • OpenIDの拡張仕様 • OpenIDの認証要求にOAuthの認可要求を付 加する方法を定義
  21. 21. OpenID OAuth Extension (2) • 追加された定義 – Combined Provider • OP かつ SP : (例)Google, MySpace – Combined Consumer • RP かつ Consumer : (例) Plaxo, smart.fm • Namespace – http://specs.openid.net/extensions/oauth/1.0
  22. 22. OpenID User Relying Party Provider Initiation OpenID入力フォームor OP候補を表示 OpenID入力 or OP選択 Discovery Establishing Associations Requesting Authentication RP Discovery Login Page + Consent Page (sign in) Responding to Authentication Requests Verifying Assertions
  23. 23. User Consumer Provider SP候補を表示 SPを選択 Discovery Requesting Authorization Obtaining the Request Token (Request Token) Login Page + Consent Page (to share data) Responding to Authorized Requests (Request Token, Verification Code) Obtaining the Access Token Accessing Protected Resources
  24. 24. 共通の役割を持つパラメータ • 戻り先URL – OpenID : return_to – OAuth : oauth_callback Hybrid Protocolではreturn_toの値を戻り先 URLとして利用
  25. 25. Combined Consumerの識別、検証 • 識別方法 – OpenID : realm/return_to – OAuth : Consumer Key • 検証方法 – OpenID : realm/return_toをDiscovery – OAuth : Consumer Keyとoauth_callbackの検証 Hybrid ProtocolではConsumer Keyと realm/return_toの検証が必要
  26. 26. OAuth Request Tokenの扱い(1) • Userの同意を得たことをConsumerに伝え、 Access Tokenと交換するためのToken • 認可要求時には、Request Tokenをクエリパ ラメータとして引き回す – Consumerとのセッション管理のため – 異なるユーザーに同意させられる脆弱性が OAuth 1.0aで解消
  27. 27. OAuth Request Tokenの扱い(2) • OpenIDの対象はブラウザアプリ – assoc_handle,Signatureの値でセッション管理、 遷移確認が可能 • Hybridでは事前のRequest Token取得不要 • 認可済のRequest TokenをOpenIDの認証応 答に付加
  28. 28. Combined Combined User Consumer Provider Initiation Combined Provider候補を表示 Combined Providerを選択 Discovery Requesting Authentication Establishing Associations (OAuth Consumer Key) RP Discovery Login Page + Consent Page (sign in and share data) Responding to Authentication Requests + OAuth Request Token(※) Verifying Assertions Obtaining the Access Token Accessing Protected Resources
  29. 29. Requesting Authentication Params • OpenID openid.ns,openid.mode,openid.claimed_id,openid.id entity,openid.assoc_handle,openid.return_to,openid .realm • OpenID OAuth Extension – openid.ns.oauth : 拡張利用を宣言 – openid.oauth.consumer : Consumer Key – openid.oauth.scope : (オプション)OAuthで利用 できる範囲を指定(Googleのみ対応)
  30. 30. Responding Authentication Params • OpenID openid.ns,openid.mode,openid.claimed_id,openid.id entity,openid.assoc_handle,openid.response_nonce, openid.return_to,openid.signed,openid.sig • OpenID OAuth Extension – openid.ns.oauth : 拡張利用を宣言 – openid.oauth.request_token : 認可済のRequest Token – openid.oauth.scope : (オプション)Access Tokenを 用いてアクセスできる範囲(Googleのみ対応)
  31. 31. Obtaining Access Token • OAuth : Access Token取得要求のパラメータ – 認可済のRequest Token – Request Tokenに対して一意なSecretの値は”空” • OAuth : Access Token取得応答のパラメータ – Access Token – Access Token Secret
  32. 32. Combined Consumerの実装 • OpenIDの認証要求にOAuth関連パラメータを 追加 – Extension namespace – Consumer Key – Scope(option) • OpenID 認証応答の検証 – Request Tokenの取得 – Scopeの確認(option)
  33. 33. Combined Providerの実装 • 拡張サポートの明示 – http://specs.openid.net/extensions/oauth/1.0 • OpenID認証ロジックにOAuthの認可ロジック を導入 – Consumer Key, Scope(option)の検証 – realm/return_toの検証 – リソースアクセスの文言追加 – Token SecretなしのRequest Token発行
  34. 34. まだまだ難しいHybrid Protocol • Hybridの使いどころ – Best Practiceを手探り状態 • 各SPのAPIが独自実装 – Hybrid Protocolを導入しても、APIアクセス時の仕 様が独自なため、各Providerごとに実装が必要 – Potrable ContactsやOpenSocial Restful APIのよう な、標準的なフォーマット、スキーマが必要
  35. 35. 数年後のOpenID,OAuthの状況 • Combined Consumerの増加 – 1つのアカウントでどこにでもログイン – 分散しているデータを効率的に利用 • Combined Provider同志がAPI対決 – OpenSocial RestfulAPIによるグラフ対決 – 独自サービスAPIで差異をアピール Hybridに対応しておくべし
  36. 36. 関連リンク • OpenID wiki : OpenID and OAuth Hybrid Extension – http://wiki.openid.net/OpenID-and-OAuth- Hybrid-Extension • draft: OpenID OAuth Extension – http://step2.googlecode.com/svn/spec/openid_oa uth_extension/latest/openid_oauth_extension.ht ml

×