Your SlideShare is downloading. ×
0
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

YAPC::Tokyo 2013 ritou OpenID Connect

6,874

Published on

Published in: Technology
0 Comments
20 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,874
On Slideshare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
0
Comments
0
Likes
20
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. OpenID Connect これが最新のOpenID仕様だッ! Ryo Ito (@ritou) YAPC::Asia Tokyo 2013
  2. 自己紹介 ● Ryo Ito (@ritou) ○ 株式会社ミクシィ 研究開発グループ ○ OpenID ファウンデーション・ジャパン エヴァンジェリスト ○ http://d.hatena.ne.jp/ritou/ ○ @IT デジタル・アイデンティティ技術最新動向 「OpenID Connect」を理解する http://www.atmarkit.co. jp/ait/articles/1209/27/news138.html
  3. 1. OpenID Connectとは?
  4. OpenIDとOAuthの違い ● OpenID : 異なるサービス間でユーザーの認証 情報をやりとりする仕様 ● OAuth : 異なるサービス間でAPIアクセスを実 現するしくみ
  5. アイデンティティ技術のトレンド ● Webアプリ間でアカウント連携 ○ OpenID 2.0 ○ 2008年頃から ● Webアプリ間のAPI連携 ○ OAuth 1.0 ○ 2009年頃から ● Webアプリ + ネイティブアプリ間のAPI連携 ○ OAuth 2.0 ○ 2010年頃から
  6. OAuth認証とは ● OAuthはAPIアクセスのための仕様だが・・・ ● プロフィールAPIでユーザー識別子を取得して SSOに使っちゃおう!!!的な発想
  7. OAuth認証とは ● OAuthはAPIアクセスのための仕様だが・・・ ● プロフィールAPIでユーザー識別子を取得して SSOに使っちゃおう!!!的な発想 ○ 独自API ○ OAuth 2.0ではモバイルアプリに広く使われるフローで セキュリティリスクが発生
  8. OpenID Connectとは ● OAuth 2.0をベースに, アイデンティティ層を拡 張した仕様 ○ 認証結果の受け渡し + APIアクセス認可を同時に行う ● OpenIDファウンデーションで仕様策定中 ○ 現在Implementer's Draft ○ 日本人も関わっている
  9. 難しそう? ミニマムな実装としては, 下記の2点だけ ● ID Tokenで認証/認可情報を受け渡し ● 標準的な属性情報提供API
  10. Source : http://www.atmarkit.co.jp/ait/articles/1209/27/news138.html OPにリダイレクトして同意
  11. Source : http://www.atmarkit.co.jp/ait/articles/1209/27/news138.html POST リクエストを送り、 アクセストークンと ID Tokenを取得
  12. Source : http://www.atmarkit.co.jp/ait/articles/1209/27/news138.html メールアドレスなど 属性情報を取得
  13. 認証/認可の情報を含むID Token ● 認可情報 ○ どこの : OP識別子 ○ だれが : ユーザー識別子 ○ いつ : タイムスタンプ ○ どこに : RP識別子 ● 認証の情報 ○ 認証時刻 ○ 認証方式
  14. トークン文字列はJSON Web Token形式 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9 . eyJpc3MiOiJodHRwczovL3NlcnZlci5leGFtcGxlLmNvbSIsIn N1YiI6IjI0NDAwMzIwIiwiYXVkIjoiczZCaGRSa3F0MyIsIm5v bmNlIjoibi0wUzZfV3pBMk1qIiwiZXhwIjoxMzExMjgxOTcwL CJpYXQiOjEzMTEyODA5NzAsImF1dGhfdGltZSI6MTMxM TI4MDk2OSwidHlwIjoiSldUIn0 . LbJA_DmSR5R3Sa79xqtG9sU8uy1Sm8KG1V8VBJOby4E
  15. トークン文字列はJSON Web Token形式 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9 ↑メタデータをBase64 URL エンコードしたもの . ←ピリオドで連結 eyJpc3MiOiJodHRwczovL3NlcnZlci5leGFtcGxlLmNvbSIsIn N1YiI6IjI0NDAwMzIwIiwiYXVkIjoiczZCaGRSa3F0MyIsIm5v bmNlIjoibi0wUzZfV3pBMk1qIiwiZXhwIjoxMzExMjgxOTcwL CJpYXQiOjEzMTEyODA5NzAsImF1dGhfdGltZSI6MTMxM TI4MDk2OSwidHlwIjoiSldUIn0 ↑送りたいデータをBase64 URL エンコードしたもの . LbJA_DmSR5R3Sa79xqtG9sU8uy1Sm8KG1V8VBJOby4E ↑署名をBase64 URLエンコードしたもの
  16. ユーザーの属性情報を提供するAPI scopeの値に関連付けられた属性情報を提供 ● openid : ユーザー識別子 ● profile : プロフィール情報 ● email : メアド + 確認状態 ● phone : 電話番号 + 確認状態 ● address : 住所情報
  17. その他 ● 動的なRP登録, 探索 ● ユーザー認証周りのリクエストパラメータ ● 署名つき/暗号化されたリクエスト ● 属性情報の集約/分散
  18. モバイル端末とIdentity モバイル端末自体の識別はけっこう難しい ● デバイス固有な識別子? ○ かんたんログインのセキュリティ/プライバシー問題 ● ある程度セキュアな領域は提供されている ○ iOS KeyChain ○ Android KeyStore
  19. Self-Issued OP : デバイス内OP モバイル/WebアプリはカスタムURIスキームにて リクエストを送信 ● openid:// 端末内でOPとして動作するアプリ or Native機能 がOPとなる ● デバイス内でユニークな鍵ペアを生成 ● 公開鍵をPayloadに含む ● 秘密鍵で署名してID Tokenを作成
  20. Self-Issued OP : デバイス内OP 利用するモバイル/Webアプリのメリット ● 公開鍵のハッシュ値から、どの端末を利用して いるかを識別可能 ● タイムスタンプ/署名により改ざんが難しい ● ユーザーの同意を得るしくみがある
  21. Self-Issued OP : デバイス内OP いくつか課題が残っている ● 信頼性(OS機能じゃないとNG?) ● 名寄せ防止のための複数の鍵ペア生成 ネイティブアプリを作っていてより厳密なデバイス 識別をやりたいところは使えると思う
  22. 2. OIDC::Lite
  23. OIDC::Lite ● OAuth 2.0のServer/Client向けライブラリであ るOAuth::Lite2を拡張 ● https://metacpan.org/module/OIDC::Lite ● https://github.com/ritou/p5-oidc-lite
  24. Source : http://www.atmarkit.co.jp/ait/articles/1209/27/news138.html
  25. RP(Client)向け機能 ● 認可要求のURL生成 ● アクセストークン、IDトークンの要求 ● レスポンスの検証 LWP使って手動でリクエストを書き, レスポンスを JSONデコードするよりは楽
  26. OP(Server)向け機能 ● 各エンドポイント毎に”一連の手続き”を実装 ● Authorization Endpoint ○ リクエストパラメータの検証 ○ ユーザー同意/拒否後のレスポンス生成 ○ 同意画面表示のあたりで上記メソッドを使う ● Token Endpoint ○ 各grant_type単位の処理を実装 ○ psgiアプリケーション ● Protected Resource ○ Access Tokenを検証しユーザーIDなどをAPIに必要な 値を環境変数にセット ○ PlackのMiddleware
  27. OP(Server)向け機能 利用者が行うこと ● Access Token(アクセストークン), AuthInfo(認 可情報)の保存部分などを実装 ○ あらかじめ用意されているのはアクセサのみ ○ DBに入れたりキャッシュに保存したり ● DataHandlerに定義されている処理を実装 ○ client_idなどの検証 ○ 上記クラスの生成/更新処理
  28. 難しそう? ● サンプルOP/RP作りました ○ https://github.com/ritou/p5-oidc-lite-demo-server ○ https://github.com/ritou/p5-oidc-lite-demo-client ● デモ ○ http://demo-client.openidconnect.info/ ○ http://demo-server.openidconnect.info/ ● ブログエントリも書きました ○ http://d.hatena.ne.jp/ritou/
  29. サンプルOP/RP ● 目的 ○ ライブラリの使い勝手を確認 ○ OP/RPの実装例を公開 ○ 誰でもInterop! ● carton install + plackupで簡単に起動
  30. サンプルOP : Authorization Requestの表示
  31. サンプルOP : Authorization Responseの表示
  32. サンプルRP : Access Token Req/Resの表示
  33. サンプルRP : ID Tokenの内容/属性情報の表示
  34. まとめ ● OpenID Connect ○ OAuth 2.0にIdentity層を追加する拡張 ○ ミニマムな実装はID Tokenと属性提供API ○ Self-Issued OPでデバイス特定 ● OIDC::Lite ○ OAuth::Lite2を拡張したOP/RP向けライブラリ ○ サンプルOP/RPもあります
  35. 終わり OpenIDやOAuthについての質問や疑問がありま したら @ritou までお気軽に声をかけてください!!!

×