OAuth認証再考からのOpenID Connect #devlove

3,790 views

Published on

Published in: Technology, Business

OAuth認証再考からのOpenID Connect #devlove

  1. 1. OAuth認証再考からの OpenID Connect @nov
  2. 2. Nov Matake OpenID Foundation Japan Evangelist 初号機 OAuth.jp Idcon Rubyist fb_graph, rack-oauth2, openid_connect etc.
  3. 3. 「○○ ID でログイン」
  4. 4. ユーザー登録めんどくさい
  5. 5. 複数サイトで共通のパスワード
  6. 6. 「○○ ID でログイン」
  7. 7. OpenID / OAuth
  8. 8. http://janrain.com/blog/social-login-trends-across-the-web-for-q3-2013/
  9. 9. OAuth 認証 … って言うな …
  10. 10. 定義: OAuth 認証 外部サービスが提供する OAuth 1.0/2.0 ベースの “Proprietary” な Profile API を 使ってユーザー認証を行うこと。
  11. 11. Proprietary
  12. 12. GET /me のところを差し替え ると他の ID Provider も使える
  13. 13. THE
  14. 14. OAuth 認証の落とし穴
  15. 15. GET /me User Info :
  16. 16. Weak Point GET /me User Info :
  17. 17. Weak Point Token Replace GET /me User Info :
  18. 18. Weak Point Token Replace GET /me Different User Data User Info :
  19. 19. 4者目がいる時は注意 !! GET /me User Info :
  20. 20. 見ず知らずの他アプリ向けの Tokenを受けいれてはならない
  21. 21. GET /me User Info Another Proprietary GET /app App ID
  22. 22. 4 API Request 毎ログインごとに GET /oauth/authorize POST /oauth/token GET /app GET /me
  23. 23. ♥ OpenID Connect OAuth 2.0 + Standardised Identity Layer #MA7 Mashup Caravan & Meetup in Kyoto
  24. 24. ID Token User Info API
  25. 25. ID Token 認証イベントのアサーション (JSON Web Token) iss – Issuer sub – Subject, End-user Identifier aud – Audience, Client ID iat - issued at exp - expiry
  26. 26. 誰が (issuer = IdP) 誰を (subject = end-user) 誰のために (audience = client) 認証したのか
  27. 27. ID Token Verification Verify Signature (RSA-SHA256 etc.) Verify Claims iss => Expected IdP ? aud => Own Client ID ? iat => Within X mins ? exp => Future ? Get “sub”
  28. 28. ID Token User Info API
  29. 29. ID Token ID Token さえあれば認証可能 User Info API
  30. 30. UserInfo API OAuth 2.0 対応の API Endpoint レスポンスフォーマット標準化 ID 連携に必要なプロフィールデータは割と似てる User ID, 氏名, ニックネーム, 生年月日, 住所 etc. 登録時だけ利用 ?
  31. 31. Discovery & Dynamic Registration
  32. 32. User Centric means Dynamic
  33. 33. developers.facebook.com でアプリ登録 client_id & client_secret をアプリに埋め込む 必要な API Endpoint とレスポンスフォーマットも API Document 読んで把握
  34. 34. developers.facebook.com でアプリ登録 client_id & client_secret をアプリに埋め込む 全部自動化 必要な API Endpoint とレスポンスフォーマットも API Document 読んで把握
  35. 35. Discovery WebFinger (RFC 7033) GET /.well-known/webfinger?resource=*** OpenID Connect をサポートしてるかどうか OP Config GET /.well-known/openid-configuration OpenID Connect の各 endpoint 等
  36. 36. Dynamic Registration Client Registration Endpoint (Discoverable) Standardised Client Metadata redirect_uris, response_types, grant_types, application_type, client_name, logo_uri etc.
  37. 37. Harder Things? slideshare.net/nat_sakimura/open-idspecificationsworkupdatetokyo2011
  38. 38. twitter.com/nov slideshare.net/matake github.com/nov openid-foundation-japan.github.com

×