Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Yahoo! JAPANのOpenID Certified Mark取得について

1,982 views

Published on

タイトル:
『Yahoo! JAPANのOpenID Certified Mark取得について』

概要:
コンシューマー分野で、Certification 取得に対する事業者としてのモチベーションや、実際に Conformance Test に合格するために苦労した点などをお聞かせ頂きます。

OpenID TechNight Vol.14 - OpenID Certification Dec 16, 2016
URL:http://peatix.com/event/216931

Published in: Internet
  • Be the first to comment

Yahoo! JAPANのOpenID Certified Mark取得について

  1. 1. 2016年年12⽉月19⽇日 ヤフー株式会社 認証技術(ID連携)⿊黒帯 倉林林 雅 Yahoo!  JAPANの OpenID  Certified  Mark取得について OpenID  TechNight Vol.14
  2. 2. プロフィール 2 倉林林 雅(kura) ヤフー株式会社 認証技術(ID連携)⿊黒帯 OpenID  ファウンデーション・ジャパン エバンジェリスト @kura_̲lab
  3. 3. ⿊黒帯制度度 ⿊黒帯とは「該当分野について 突出した知識識とスキルを 持っている第⼀一⼈人者」のこと 3 ⿊黒帯制度度 http://hr.yahoo.co.jp/workplace/culture.html
  4. 4. アジェンダ 4 1. はじめに 2. Yahoo!  ID連携とは 3. OpenID  Certification  プログラムとは 4. Yahoo!  ID連携がOpenID  Certified  Markを取得する理理由 5. 標準対応にあたっての仕様変更更点 6. 設計時に苦悩した仕様 7. 対応時に拡張したくなった仕様 8. 導⼊入のお問い合わせ・⼀一般公開について 9. まとめ
  5. 5. 5 はじめに
  6. 6. OpenID  Certified  Mark取得しました 6 https://techblog.yahoo.co.jp/advent-‐‑‒calendar-‐‑‒2016/openid_̲certified/
  7. 7. OpenID  Certified  Mark取得しました 7 Yahoo!  ID連携(Yahoo!  ID  Federation)は OpenID  Connect™  protocolのOP  Basic,   OP  Implicit,  OP  Hybrid,  OP  Configのプロファイル を適合したOpenID  Certified™な実装を提供します。 OpenID  Certified™   by  Yahoo  Japan  Corporation  to   the  of  OP  Basic,  OP  Implicit,  OP  Hybrid  and  OP  Config of   the  OpenID  Connect™  protocol.
  8. 8. 8 Yahoo!  ID連携とは
  9. 9. Yahoo!  ID連携とは 9 • Yahoo!  JAPAN  IDを⽤用いてID連携をする仕組み • OpenID  Connectで認証認可を提供 • シングルサインオン • ユーザーの属性情報取得 • SDKを提供 • PHP  /  Java /  iOS /  Android
  10. 10. Yahoo!  JAPAN  IDについて 10 l Yahoo!  JAPAN  IDとは、Yahoo!  JAPANのサービスを ご利利⽤用になるためのアカウントです。 l Yahoo!メール、ヤフオク!、Yahoo!ニュース、 Yahoo!天気などの、ほぼすべてのYahoo!サービスで 利利⽤用できます。 l 外部のサイトでもYahoo!  JAPAN IDを利利⽤用できる サイトが増え、⽇日を追うごとに利利便便性が向上しています。 ⽉月間3,600万ID*以上の アクティブ利利⽤用者数を持つ ⽇日本最⼤大級の会員基盤です *  ヤフー株式会社 2016年年度度第2四半期決算説明会資料料より
  11. 11. 国内ソーシャルログイン利利⽤用率率率シェアNo.1 11 56.5% 22.1% 17.8% 3.1% 0.5% 全社のソーシャルログイン率率率 Yahoo!  JAPAN Facebook Google/Google+ Twitter mixi フィードフォース株式会社様プレスリリースより(2015/07/16) 国内ソーシャルログイン利利⽤用率率率 Yahoo! JAPAN ID シェアNo.1 ※株式会社フィードフォース提供、ソーシャルPLUS利利⽤用企業の統計データ
  12. 12. OpenID  Connect 12 • OAuth  2.0を拡張し認証機能を追加したプロトコル • OAuth  2.0ベースなのでリソースアクセスも可 • ユーザーの属性情報取得についても定義 • 認証 + 認可 + 属性情報取得 • サーバサイドだけでなくクライアントサイドでの利利⽤用 も想定
  13. 13. 13 OpenID  Certification  プログラムとは
  14. 14. OpenID  Certification  プログラムとは 14 • ID連携の技術であるOpenID  Connectを実装してい る事業者に対して標準仕様に適合しているかをテスト するプログラム • 仕様を満たしテストに合格することでOpenID   Connectの仕様策定、標準化しているOpenID   Foundationから適合している実装であることを⽰示す OpenID  Certified  Markが与えられる
  15. 15. OpenID  Certification  プログラムとは 15 http://openid.net/certification/ • Google,  Microsoft,  Ping  Identity,  Salesforce,   PayPal,  NRI,  NEC,  オージス総研など、34のサー ビスがOpenID  Certifiedとなっている (2016年年12⽉月時点) Yahoo!  ID連携も追加されました
  16. 16. 16 Yahoo!  ID連携が OpenID  Certified  Markを取得する理理由
  17. 17. OpenID  Certified  Markを取得する理理由 17 • OpenID  Certified  Markの取得 =  「標準仕様に準拠すること」 • 異異なる実装間での相互運⽤用性が確実になる • 例例)すでにGoogle  Federated  Identityを 導⼊入しているサービスであれば Yahoo!  ID連携もほぼ同じ実装で 導⼊入が可能
  18. 18. OpenID  Certified  Markを取得する理理由 18 • 標準仕様に対応したOSSのライブラリーも利利⽤用でき るため、いろいろな開発⾔言語や環境での導⼊入コスト削 減も期待できる • Libraries,  Products,  and  Tools • http://openid.net/developers/libraries/ • C,  C#,  Go,  Java,  JavaScript,  Perl,  PHP,   Ruby...etc
  19. 19. これまでのYahoo!  ID連携はdraft仕様 19 • これまでのYahoo!  ID連携はOpenID  Connectの標 準仕様とは微妙に異異なる仕様で機能を提供してきた • OpenID  Connectの仕様は2014年年2⽉月にローンチ されたが、Yahoo!  JAPANでは2012年年の年年末時点 でdraftをベースとした仕様で機能の提供を開始
  20. 20. draft仕様の背景 20 • 主なインターネット標準仕様策定の流流れ 1. draft(仕様のたたき)を作成 2. ベンダーやプロバイダーが実装・提供し、draft の修正を繰り返す 3. draftから標準仕様になる • 当時はYahoo!  JAPANに限らずGoogleや Microsoftもdraft仕様でサービスを提供
  21. 21. draft仕様の背景 21 • Yahoo!  JAPANではOpenID  2.0,  BBAuth,   OAuth 1.0aといったID連携技術を提供してきた • 多くの企業とID連携をすすめていく上で「認証と認 可の2つの機能の導⼊入」や「RPが導⼊入する際のより 簡単な実装」が求められた • 仕様の最終版を待たず策定中のdraftの仕様を採⽤用
  22. 22. さらなる多様なニーズに応えるために 22 • 2012年年からdraft仕様で提供してきたが、 2014年年に標準化され課題やニーズが増えてきた 標準仕様に対応した ライブラリや ミドルウェアの充実 ネイティブアプリの クライアントと サーバーでの認証認可 標準仕様対応 Hybrid  Flow対応
  23. 23. さらなる多様なニーズに応えるために 23 • 課題の解決と多様なニーズに応え、また多くのサービ スへ簡単に導⼊入してもらえるように標準仕様に対応し 不不⾜足していた機能を追加することにした • そして2016年年12⽉月に新しいYahoo!  ID連携が OpenID  Certificationプログラムのテストを通過し OpenID  Certifiedされた
  24. 24. OpenID  Certified  Mark取得しました 24 Yahoo!  ID連携(Yahoo!  ID  Federation)は OpenID  Connect™  protocolのOP  Basic,   OP  Implicit,  OP  Hybrid,  OP  Configのプロファイル を適合したOpenID  Certified™実装です。 OpenID  Certified™   by  Yahoo  Japan  Corporation  to  the  of   OP  Basic,  OP  Implicit,  OP  Hybrid  and  OP  Config of   the  OpenID  Connect™  protocol.
  25. 25. 25 標準対応にあたっての仕様変更更点
  26. 26. 標準対応にあたっての仕様変更更点 26 • 新しいYahoo!  ID連携で変更更された仕様や新たに追 加された標準仕様 • ID  Token・Claim関連 • Hybrid  Flow • draftとの差分とその⽬目的を確認しながら変更更点をみ ていきましょう
  27. 27. ID  Token・Claim関連 27 • ID  Token・UserInfo  Endpointのユーザー識識別⼦子の user_̲idをsubへ変更更 • sub:subject(主体)。ユーザー識識別⼦子 • 仕様策定中の整合性のため • ID  Tokenのデコード結果を返却するCheck  ID  Endpoint の廃⽌止 • ID  TokenはJSONベースのフォーマットであり多くの 場合、クライアントサイドでデコードできるため
  28. 28. ID  Token・Claim関連 28 • ID  Tokenの署名を共有鍵を⽤用いたHMAC-‐‑‒SHA256から 公開鍵によるRSA-‐‑‒SHA256へ変更更 • 共有鍵が漏漏洩した場合、署名が⽣生成できるためID   Tokenを偽装できてしまう • 公開鍵にすることでID  Tokenの偽装を防⽌止するととも に鍵管理理のコストを下げるため
  29. 29. ID  Token・Claim関連 29 • ID  TokenのPayloadにauth_̲time,  armを追加 • auth_̲time:Authentication  Time。認証時間 • amr:Authentication  Method  Reference。 パスワードやワンタイムパスワードなどの認証⼿手段 • IdP(ID  Provider)がユーザーを認証した時刻と認証 ⽅方法をRPで判定できるようにするため
  30. 30. ID  Token・Claim関連 30 • ID  TokenのPayloadにat_̲hash,  c_̲hashを追加 • at_̲hash:Access  Token  Hash • c_̲hash:Authorization  Code  Hash • SHA1のハッシュ値。 • ID  Tokenを受け取った際に検証することで Access  Token, Authorization  CodeとID  Tokenの 組み合わせの改ざんを防⽌止するため
  31. 31. Hybrid  Flow 31 • Hybrid  Flow対応 • クライアントサイド、サーバーサイドの両サイド での連携を可能にするため • Authorization  Code  Flow・Hybrid  Flowに おけるToken  Endpointのレスポンスで ID  Tokenをデフォルト返却 • OpenID  Connectではユーザーの認証を 前提としているため
  32. 32. Hybrid  Flow 32 アプリ Authorization  Server Resource  Server 認証 APIリクエスト 認証 サーバーサイド RP IdPクライアントサイド
  33. 33. 33 設計時に苦悩した仕様
  34. 34. redirect_̲uriの仕様 34 ココの話
  35. 35. redirect_̲uriの仕様 35 • redirect_̲uri • “…  This  URI  MUST  exactly  match  one  of   the  Redirection  URI  values  for  the  Client   pre-‐‑‒registered  at  the  OpenID  Provider,   with  the  matching  performed…” OpenID  Connect  Core  1.0  incorporating  errata  set  1 http://openid.net/specs/openid-‐‑‒connect-‐‑‒core-‐‑‒1_̲0.html
  36. 36. redirect_̲uriの仕様 36 • サイトへの戻り先を指定するredirect_̲uriは「事前 に登録されているURIと完全⼀一致していなければな らない」 • 同⼀一ドメインでホスティングしているRP(Relying   Party)も考慮し、悪意あるサイトへのリダイレクト を防⽌止するためにパスやクエリなどを制限している • × https://example.com/site?id=<可変の値>
  37. 37. redirect_̲uriの仕様 37 • RPの中にはクエリなどで戻り先のページを制御した いという要望がある • 利利便便性が下がるが、新しいYahoo!  ID連携ではセ キュリティを優先して仕様どおり「redirect_̲uriは 完全⼀一致」とした • 戻り先で可変のパラメーターを利利⽤用したい場合は state値を利利⽤用するとよい
  38. 38. 38 対応時に拡張したくなった仕様
  39. 39. テンプレートの⾃自動判定 39 • displayパラメーター • ユーザーに表⽰示する同意画⾯面等のテンプレートを 指定する機能 • 仕様に定義されているタイプ • page/popup/touch/wap • RPの要望:フレームワークの⾃自動判定でテンプレー トを出し分けしていることもあり、同意画⾯面も同様に 出し分けをしてほしいというニーズがある
  40. 40. テンプレートの⾃自動判定 40 • displayパラメーターが未指定の場合はデフォルトで page(PC版)のテンプレートを表⽰示する仕様となって いる • User  Agentを利利⽤用して適切切な画⾯面を出してもよいと 定義されている • RPから明⽰示的に⾃自動判定を指定するために ”display=auto”を独⾃自仕様として定義した
  41. 41. 住所情報のClaim 41 • UserInfo  Endpointの住所関連のClaim • formatted:整形された住所情報 • street_̲address:番地・建物情報 • locality:市区町村 • region:都道府県 • postal_̲code:郵便便番号 • contry:国コード
  42. 42. 住所情報のClaim 42 • RPの要望:RPのアカウント登録フォームのプ リセットとして利利⽤用する際、番地と建物情報の ⼊入⼒力力項⽬目が分かれていることがあり、 street_̲addressを分割してほしい • 独⾃自Claimとして以下の2つを定義し返却 • street_̲address_̲block:番地情報 • street_̲address_̲building:建物情報
  43. 43. Access/Refresh  Tokenの有効期限 43 • expires_̲inパラメーター • Access  Tokenが無効になるまでの秒数 • RPの要望:Access  TokenだけでなくRefresh   Tokenの有効期限も知りたい。可能であればUnixタ イムスタンプで具体的な期限も知りたい
  44. 44. Access/Refresh  Tokenの有効期限 44 • Access/Refresh  Tokenは期限によらずユーザーあ るいはIdP(ID  Provider)によって無効化される可能 性があるため、具体的なタイムスタンプを返却する仕 様にはなっていない • 通信、処理理軽減のために、Access  Tokenは有効期限 エラーになる前に更更新する実装がベストプラクティス となっているためタイムスタンプを返却する独⾃自仕様 も検討中
  45. 45. 同意キャンセル 45 • 同意キャンセル時のレスポンスは未定義 • Yahoo!  ID連携ではキャンセルされた場合は、code は返却せずにstateを付与してredirect_̲uriにリダイ レクトさせる仕様としている • RP側で判定するために明⽰示的にerrorや error_̲descriptionを独⾃自仕様として定義すること も検討中
  46. 46. 46 導⼊入のお問い合わせ ⼀一般公開について
  47. 47. 導⼊入のお問い合わせ 47 • 現在、新しいYahoo!  ID連携のご利利⽤用はお問い合わ せいただいた企業のみの提供となっています。 • ご利利⽤用を希望される⽅方は以下のお問い合わせよりご連 絡ください。 • デベロッパーネットワーク -‐‑‒お問い合わせ-‐‑‒ • http://developer.yahoo.co.jp/developer/contact/
  48. 48. ⼀一般公開について 48 • デベロッパーネットワーク上での詳細な仕様の公開や 利利⽤用は、2017年年以降降に準備でき次第ご案内しますの で、もうしばらくお待ちください。
  49. 49. 49 まとめ
  50. 50. まとめ 50 • 新しいYahoo!  ID連携はOpenID  Certified  Markを取 得しました • 標準仕様に準拠することで、異異なる実装間での相互運⽤用性 が確実になり、OSSのライブラリーやミドルウェアを利利 ⽤用できるようにしてRPへの導⼊入を促進する • 新しいYahoo!  ID連携は標準対応にあたっていくつ か仕様変更更をおこなった • 独⾃自仕様も追加、検討をしている
  51. 51. ご清聴ありがとう ございました 51
  52. 52. 52 質疑応答
  53. 53. 53 Appendix
  54. 54. Appendix 54 • ⿊黒帯制度度 • http://hr.yahoo.co.jp/workplace/culture.html • Yahoo!  ID連携(外部サイト) • http://developer.yahoo.co.jp/yconnect/ • OpenID  Certification(外部サイト) • http://openid.net/certification/ • OpenID  Certified  Mark(外部サイト) • http://openid.net/certification/mark/ • OpenID  Certification  Program(外部サイト) • http://oixnet.org/openid-‐‑‒certifications/yahoo-‐‑‒japan/
  55. 55. Appendix 55 • Yahoo!  ID連携とは -‐‑‒OAuth 2.0  および OpenID  Connectの仕様について • http://developer.yahoo.co.jp/yconnect/introduction.html • OpenID  Connect  ⼊入⾨門 ?コンシューマーにおけるID連携のトレンド?(外部サイ ト) • http://www.slideshare.net/kura_̲lab/openid-‐‑‒connect-‐‑‒id • OpenID  Connect  Core  1.0  incorporating  errata  set  1(外部サイト) • http://openid.net/specs/openid-‐‑‒connect-‐‑‒core-‐‑‒1_̲0.html

×