The Latest Specs of OpenID Connect          @ritou         2011/7/8 Identity Conference #9
@ritou• 秋田県在住• 去年まで某ポータルサイトのログイン担当•http://d.hatena.ne.jp/ritou• OpenID Connect WG Contributer                             ...
はじめに• 情報漏えい騒ぎ – いまさらPWの使いまわしのリスクに注目   • いまこそOpenID/OAuthの出番?• OpenID / OAuth へのネガティブな影響 – あるOPのパスワードが漏れたらRP/Clientまで   全部や...
OpenIDとOAuth• OpenID Auth 2.0           • OAuth 1.0a       • OpenID OAuth Extension• OpenID v.Next             • OAuth WRA...
OpenID Connect• Authorization : OAuth 2.0 Base• Authentication• Attribute transmission  – UserInfo Endpoint• Discovery  – ...
Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protoco...
Latest Specs• Core  – http://openid.net/specs/openid-connect-core-1_0.html• Framework  – http://openid.net/specs/openid-co...
Latest Specs• Session Management  – http://openid.net/specs/openid-connect-session-    1_0.html• Dynamic Client Registrati...
Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protoco...
Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protoco...
GET /.well-known/simple-web-discovery                       OpenID Connect Discovery      • Endpoint,メタデータをDiscoveryするしくみ ...
GET /.well-known/simple-web-discovery       OpenID Connect Simple Web Discovery      • Discoveryに利用できるIdentifierは3種類      ...
GET /.well-known/simple-web-discovery       OpenID Connect Simple Web Discovery      • Request          GET          /.wel...
GET /.well-known/simple-web-discovery       OpenID Connect Simple Web Discovery      • Response        HTTP/1.1 200 O.K.  ...
Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protoco...
OpenID Connect      Dynamic Client Registration• DiscoveryによりRegistration Endpointを  取得• Registration EndpointにClient登録/更新...
OpenID Connect        Dynamic Client Registration• Request (HTTP POST, JSONオブジェクト) –   type : “client_associate”/“client_u...
OpenID Connect       Dynamic Client Registration• Response (JSON object)  – client_id  – client_secret  – expires_in      ...
Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protoco...
HTTP Redirect Binding• OAuth 2.0のFlowにOpenID Connectの  Request/Responseパラメータを加える方法                               20
Protocol Flows• Authorization Code Flow   – ClientがWeb Serverとして動作• Implicit Flow   – ClientがJavaScript, Flashなどで動作       ...
Protocol Flows• Authorization Code Flow   – ClientがWeb Serverとして動作• Implicit Flow   – ClientがJavaScript, Flashなどで動作       ...
Authorization Code FlowEnd User             Client               AuthZ      Resource    0. Clientにサービス要求                  ...
Authorization Code FlowEnd User             Client               AuthZ      Resource    0. Clientにサービス要求                  ...
Requestの送り方は3種類• Query Parameters Method  – クエリパラメータにそのまま含む• Request Parameter Method  – OpenID Connect RequestをToken(文字列)...
Query Parameters Methodhttps://server.com/op/authorize?response_type=token&client_id=s6BhdRkqt3&redirect_uri=https%3A%2F%2...
Request Parameter Methodhttps://server.com/op/authorize?response_type=code&client_id=s6BhdRkqt3&redirect_uri=https%3A%2F%2...
request パラメータ• OpenID Connect リクエスト – 下記機能についてのリクエスト   • UserInfo : 必要なクレーム、フォーマット   • Session Management : ID Tokenに含むクレー...
Request File Method• JSON オブジェクトを返すRequest URLを作  成https://rp.example.com/rf.js{    "response_type": "code",    "client_id...
Request File Methodhttps://server.com/op/authorize?response_type=code&client_id=s6BhdRkqt3&state=af0ifjsldkj&request_uri=h...
Authorization Code FlowEnd User             Client               AuthZ           Resource    0. Clientにサービス要求             ...
Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protoco...
OpenID Connect Framework• OAuth 2.0 に追加される OpenID  Connect独自リクエスト/レスポンス• UserInfo エンドポイントで返されるClaim• その他...               ...
OpenID Request Object• OpenID Connect リクエスト – 下記機能についてのリクエスト   • UserInfo : 必要なクレーム、フォーマット   • Session Management : ID Tok...
OpenID Request Object{"inf":     {     "clm":              {     "name": null, "nickname": {"opt": true},                 ...
UserInfo Endpoint : Claims• 下記の3種類のClaimを提供する – Normal Claims : OPがAssertしたClaims – Aggregated Claims : OPから返されるが、別   のOPが...
Authorization Code FlowEnd User             Client               AuthZ      Resource    0. Clientにサービス要求                  ...
{    "name": "Jane Doe"    ...    "_claim_names": { "birthday": "src1",                           "eye_color": "src1",    ...
Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protoco...
OpenID Connect UserInfo• FrameworkにあったNormal Claimsについ  ての定義  – Profileデータ• Request  – access_token  – schema : “openid”  ...
OpenID Connect UserInfo• ResponseはJSONオブジェクト or JWT – AuthZ Requestの際にJWT形式で指定                               41
Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protoco...
OpenID Connect           Session Management• ID Tokenを用いたセッション管理 – 現在誰がログイン中なのか確認する – Client側からログアウトさせる• ID Token : JWSを用い...
OpenID Connect          Session Management• Creating Session : ID Token発行  – Authorization Request    • Clientはresponse_ty...
OpenID Connect         Session Management• Session Management Endpoints  – Refresh Session : expireしたid_tokenの更新  – Check ...
最後に• 仕様は日々更新中 http://lists.openid.net/mailman/listinfo/ope   nid-specs-ab                                                46
Upcoming SlideShare
Loading in …5
×

The Latest Specs of OpenID Connect at #idcon 9

4,237 views

Published on

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

No Downloads
Views
Total views
4,237
On SlideShare
0
From Embeds
0
Number of Embeds
1,171
Actions
Shares
0
Downloads
10
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

The Latest Specs of OpenID Connect at #idcon 9

  1. 1. The Latest Specs of OpenID Connect @ritou 2011/7/8 Identity Conference #9
  2. 2. @ritou• 秋田県在住• 去年まで某ポータルサイトのログイン担当•http://d.hatena.ne.jp/ritou• OpenID Connect WG Contributer 2
  3. 3. はじめに• 情報漏えい騒ぎ – いまさらPWの使いまわしのリスクに注目 • いまこそOpenID/OAuthの出番?• OpenID / OAuth へのネガティブな影響 – あるOPのパスワードが漏れたらRP/Clientまで 全部やられるね → orz 今こそ安全なAuthN/Zのしくみを提供してア ピールすべき! 3
  4. 4. OpenIDとOAuth• OpenID Auth 2.0 • OAuth 1.0a • OpenID OAuth Extension• OpenID v.Next • OAuth WRAP – Artifact Binding (for • OAuth 2.0 Mobile etc...) • OpenID Connect 4
  5. 5. OpenID Connect• Authorization : OAuth 2.0 Base• Authentication• Attribute transmission – UserInfo Endpoint• Discovery – JSON Based• Dynamic Client Registration• Session Management – Refresh/Check/Logout 5
  6. 6. Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protocol binding• Session Management• Dynamic Client Registration• UserInfo 6
  7. 7. Latest Specs• Core – http://openid.net/specs/openid-connect-core-1_0.html• Framework – http://openid.net/specs/openid-connect-framework- 1_0.html• Discovery – http://openid.net/specs/openid-connect-discovery- 1_0.html• HTTP Redirect Binding – http://openid.net/specs/openid-connect-http-redirect- 7 1_0.html
  8. 8. Latest Specs• Session Management – http://openid.net/specs/openid-connect-session- 1_0.html• Dynamic Client Registration – http://openid.net/specs/openid-connect-registration- 1_0.html• UserInfo – http://openid.net/specs/openid-connect-userinfo- 1_0.html 8
  9. 9. Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protocol binding• Session Management• Dynamic Client Registration• UserInfo 9
  10. 10. Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protocol binding• Session Management• Dynamic Client Registration• UserInfo 10
  11. 11. GET /.well-known/simple-web-discovery OpenID Connect Discovery • Endpoint,メタデータをDiscoveryするしくみ – Endpoints – サポートしているFlow,Identifierの種類など • HTTPS + GETでDiscovery用エンドポイントに アクセス • レスポンスフォーマットはJSONオブジェクト – XRDよりも簡単!? 11
  12. 12. GET /.well-known/simple-web-discovery OpenID Connect Simple Web Discovery • Discoveryに利用できるIdentifierは3種類 – Hostname – Email – URL • OpenID Connectの最初の利用例 – Emailアドレスを入力(≒WebFinger) – OP Identifierを入力(≒OpenID Auth 2.0) – OpenID URLを入力(≒OpenID Auth 1.1) 12
  13. 13. GET /.well-known/simple-web-discovery OpenID Connect Simple Web Discovery • Request GET /.well-known/simple-web-discovery? principal= joe@example.com& service=http://openid.net/specs/connect/1.0/issuer HTTP/1.1 Host: example.com 13
  14. 14. GET /.well-known/simple-web-discovery OpenID Connect Simple Web Discovery • Response HTTP/1.1 200 O.K. Content-Type: application/json { "locations": ["https://example.com/auth"] } 別のURLへのリダイレクト指定も可能 14
  15. 15. Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protocol binding• Session Management• Dynamic Client Registration• UserInfo 15
  16. 16. OpenID Connect Dynamic Client Registration• DiscoveryによりRegistration Endpointを 取得• Registration EndpointにClient登録/更新 のリクエストを送る 16
  17. 17. OpenID Connect Dynamic Client Registration• Request (HTTP POST, JSONオブジェクト) – type : “client_associate”/“client_update” – client_id – client_secret – contact : email list – application_type, application_name – logo_url, redirect_url, js_origin_url, jwk_url – sector_identifier@_nat JWTではないのでしょうか? 17
  18. 18. OpenID Connect Dynamic Client Registration• Response (JSON object) – client_id – client_secret – expires_in 18
  19. 19. Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protocol binding• Session Management• Dynamic Client Registration• UserInfo 19
  20. 20. HTTP Redirect Binding• OAuth 2.0のFlowにOpenID Connectの Request/Responseパラメータを加える方法 20
  21. 21. Protocol Flows• Authorization Code Flow – ClientがWeb Serverとして動作• Implicit Flow – ClientがJavaScript, Flashなどで動作 21
  22. 22. Protocol Flows• Authorization Code Flow – ClientがWeb Serverとして動作• Implicit Flow – ClientがJavaScript, Flashなどで動作 22
  23. 23. Authorization Code FlowEnd User Client AuthZ Resource 0. Clientにサービス要求 Server Server 1. Request準備 2. AuthZ ServerにRequestを送信 3. Authentication 4. Consent/Authorization 5. AuthZ CodeとともにUserを戻す 6. Assertion要求 7. Assertion応答 8. UserInfo Endpointにアクセス 23 9. 属性情報など応答
  24. 24. Authorization Code FlowEnd User Client AuthZ Resource 0. Clientにサービス要求 Server Server 1. Request準備 2. AuthZ ServerにRequestを送信 3. Authentication 4. Consent/Authorization 5. AuthZ CodeとともにUserを戻す 6. Assertion要求 7. Assertion応答 8. UserInfo Endpointにアクセス 24 9. 属性情報など応答
  25. 25. Requestの送り方は3種類• Query Parameters Method – クエリパラメータにそのまま含む• Request Parameter Method – OpenID Connect RequestをToken(文字列) にしてrequestパラメータとして指定 • UserInfo/Session Management関連• Request File Method – JSONオブジェクトを返すURLを用意して、その URLをパラメータに含む 25
  26. 26. Query Parameters Methodhttps://server.com/op/authorize?response_type=token&client_id=s6BhdRkqt3&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb&scope=openid&state=af0ifjsldkj 26
  27. 27. Request Parameter Methodhttps://server.com/op/authorize?response_type=code&client_id=s6BhdRkqt3&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb&scope=openid&state=af0ifjsldkj&request=jwt_header.jwt_payload.jwt_crypto 27
  28. 28. request パラメータ• OpenID Connect リクエスト – 下記機能についてのリクエスト • UserInfo : 必要なクレーム、フォーマット • Session Management : ID Tokenに含むクレーム、 PAPE関連のパラメータなど• JSONオブジェクトを文字列として表現 – “jwt_header.jwt_payload.jwt_crypto” • jwt_header : メタデータをBase64URLEnc • jwt_payload : JSONオブジェクトをBase64URLEnc • jwt_crypto : Signatureなど 28
  29. 29. Request File Method• JSON オブジェクトを返すRequest URLを作 成https://rp.example.com/rf.js{ "response_type": "code", "client_id": "s6BhdRkqt3", "redirect_uri": "https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb", "scope": "openid", "state": "af0ifjsldkj“ 29}
  30. 30. Request File Methodhttps://server.com/op/authorize?response_type=code&client_id=s6BhdRkqt3&state=af0ifjsldkj&request_uri=https://rp.example.com/rf.jsモバイルでも使えるように512byteを超えてはいけない! 30
  31. 31. Authorization Code FlowEnd User Client AuthZ Resource 0. Clientにサービス要求 Server Server 1. Request準備 2. AuthZ ServerにRequestを送信 2.5. Request File 取得 3. Authentication 4. Consent/Authorization 5. AuthZ CodeとともにUserを戻す 6. Assertion要求 7. Assertion応答 8. UserInfo Endpointにアクセス 31 9. 属性情報など応答
  32. 32. Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protocol binding• Session Management• Dynamic Client Registration• UserInfo 32
  33. 33. OpenID Connect Framework• OAuth 2.0 に追加される OpenID Connect独自リクエスト/レスポンス• UserInfo エンドポイントで返されるClaim• その他... 33
  34. 34. OpenID Request Object• OpenID Connect リクエスト – 下記機能についてのリクエスト • UserInfo : 必要なクレーム、フォーマット • Session Management : ID Tokenに含むクレーム、 PAPE関連のパラメータなど• JSONオブジェクトを文字列として表現 – “jwt_header.jwt_payload.jwt_crypto” • jwt_header : メタデータをBase64URLEnc • jwt_payload : JSONオブジェクトをBase64URLEnc • jwt_crypto : Signatureなど 34
  35. 35. OpenID Request Object{"inf": { "clm": { "name": null, "nickname": {"opt": true}, "email": null, "verified": null, "picture": {"opt": true}, }, "fmt": "sig" }"idt": { "mxa": 86400, "eaa": "2" 35 }
  36. 36. UserInfo Endpoint : Claims• 下記の3種類のClaimを提供する – Normal Claims : OPがAssertしたClaims – Aggregated Claims : OPから返されるが、別 のOPがAssertしたClaims • JWT形式 – Distributed Claims • 別のOPのエンドポイントから返されるClaims • endpoint, access_token 36
  37. 37. Authorization Code FlowEnd User Client AuthZ Resource 0. Clientにサービス要求 Server Server 1. Request準備 2. AuthZ ServerにRequestを送信 3. Authentication 4. Consent/Authorization 5. AuthZ CodeとともにUserを戻す 6. Assertion要求 7. Assertion応答 8. UserInfo Endpointにアクセス 37 9. 属性情報など応答
  38. 38. { "name": "Jane Doe" ... "_claim_names": { "birthday": "src1", "eye_color": "src1", "credit_score": "src3" }, "_claim_sources": { "src1": {"JWT": "JWT_hdr.JWT_claims.JWT_crypto"}, "src3": {"endpoint": "https://creditagency.example.com/claimshere", "access_token": "ksj3n283dke"} }} 38
  39. 39. Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protocol binding• Session Management• Dynamic Client Registration• UserInfo 39
  40. 40. OpenID Connect UserInfo• FrameworkにあったNormal Claimsについ ての定義 – Profileデータ• Request – access_token – schema : “openid” 40
  41. 41. OpenID Connect UserInfo• ResponseはJSONオブジェクト or JWT – AuthZ Requestの際にJWT形式で指定 41
  42. 42. Latest Specs• Core : Messages, Abstract flow• Framework : Req/Res formats• Discovery• HTTP Redirect Binding : HTTP protocol binding• Session Management• Dynamic Client Registration• UserInfo 42
  43. 43. OpenID Connect Session Management• ID Tokenを用いたセッション管理 – 現在誰がログイン中なのか確認する – Client側からログアウトさせる• ID Token : JWSを用いた署名付きクレーム – issur – client_id – user_id – audience – exp 43
  44. 44. OpenID Connect Session Management• Creating Session : ID Token発行 – Authorization Request • Clientはresponse_type に “id_token”を含む – Access Token Response • AuthZ ServerはAccess Tokenと一緒にid_tokenを 渡す 44
  45. 45. OpenID Connect Session Management• Session Management Endpoints – Refresh Session : expireしたid_tokenの更新 – Check Session : id_tokenの内容取得 – End Session : Clientからのログアウト要求 45
  46. 46. 最後に• 仕様は日々更新中 http://lists.openid.net/mailman/listinfo/ope nid-specs-ab 46

×