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.

SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014

40,705 views

Published on

Published in: Technology
  • Be the first to comment

SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014

  1. 1. OpenID Connect / OAuth / SAML / SCIM 技術解説 一般社団法人 OpenIDファウンデーション・ジャパンエバンジェリスト nov エクスジェン・ネットワークス株式会社 野村 健太郎
  2. 2. 目次 ● 最新クラウドサービス利用事例 ● プロトコル四天王 ● SAML 解説 ● OAuth 2.0 解説 ● OpenID Connect 解説 ● SCIM 解説 ● まとめ Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  3. 3. 最新 クラウドサービス 利用事例 (Greeの場合) Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  4. 4. Digital Identity 界の プロトコル四天王 Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  5. 5. 本日紹介するプロトコル OpenID Connect Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  6. 6. 本日紹介するプロトコル フェデレーション プロトコル OpenID Connect Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  7. 7. 本日紹介するプロトコル ID プロビジョニング プロトコル Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  8. 8. 本日紹介するプロトコル コンシューマー系エンタープライズ系 OpenID Connect Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  9. 9. フェデレーションの基本的な仕組み OpenID Connect Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  10. 10. フェデレーションの基本的な仕組み Copyright © 2014 OpenID Foundation Japan. All Rights Reserved. サービス (SP/RP) 認証サービス (IdP/OP)
  11. 11. フェデレーションの基本的な仕組み 認証 Copyright © 2014 OpenID Foundation Japan. All Rights Reserved. サービス (SP/RP) 認証サービス (IdP/OP)
  12. 12. フェデレーションの基本的な仕組み 認証 Copyright © 2014 OpenID Foundation Japan. All Rights Reserved. サービス (SP/RP) 認証サービス (IdP/OP) 認証情報 属性情報 ● ユーザーは認証サービス(IdP/OPなど)で認証を受ける ● サービス(SP/RP)は、認証サービスが保持しているユーザー の「認証情報」や「属性情報」が欲しい
  13. 13. フェデレーションのパターン(1) 認証 Copyright © 2014 OpenID Foundation Japan. All Rights Reserved. サービス (SP/RP) 認証サービス (IdP/OP) 認証情報 属性情報
  14. 14. フェデレーションのパターン(2) 認証サービス (IdP/OP) 認証 Copyright © 2014 OpenID Foundation Japan. All Rights Reserved. 認証情報 属性情報 サービス (SP/RP) 認可コード アーティファクト
  15. 15. プロトコルで決められていること ● 認証情報や属性情報の表現形式 ○ JSON ○ XML ● 認証情報や属性情報のやりとりの方法 ○ HTTP ■ メソッド (GET、POSTなど) ■ パラメーター ○ SOAP Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  16. 16. SAML Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  17. 17. SAML とは ● https://wiki.oasis-open.org/security/FrontPage ● SAML:Security Assertion Markup Lauguage ● 認証情報、属性情報などを XML で表現 ● HTTP/SOAP などでやりとりする ● 実装例 ○ サービス : 学認、Cybozu.com、Google Apps、 Salesforce、Microsoft Azure AD、Dropbox ○ ソフトウェア : OpenAM、Shibboleth、各ベンダの製品 Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  18. 18. SAML 信頼関係の構築 IdP SP Copyright © 2014 OpenID Foundation Japan. All Rights Reserved. メタデータ (証明書、URL など)
  19. 19. SAML シーケンス IdP SP Initiate Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  20. 20. SAML シーケンス IdP SP Initiate SAML 認証リクエスト Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  21. 21. SAML シーケンス IdP SP Initiate SAML 認証リクエスト 認証(ID/PW 送信) Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  22. 22. SAML シーケンス IdP SP Initiate SAML 認証リクエスト 認証(ID/PW 送信) SAML 認証レスポンス Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  23. 23. SAML シーケンス IdP SP Initiate SAML 認証リクエスト 認証(ID/PW 送信) SAML 認証レスポンス SP へのログイン完了 Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  24. 24. SAML 認証リクエスト/認証レスポンス ● リクエスト (かなり省略) <samlp:AuthnRequest ID="ppndejggibkmmdgignpgloakglfadfldhnphndhg" IssueInstant="2014-09-16T11:19:47Z Version="2.0" <saml:Issuer>https://sp.example.com</saml:Issuer> </samlp:AuthnRequest> ● レスポンス (かなり省略) <samlp:Response デジタル署名情報 <saml:NameID>taro@example.jp</saml:NameID> </samlp:Response> Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  25. 25. 実際のリクエスト/レスポンス リクエストレスポンス <samlp:AuthnRequest ID=" ppndejggibkmmdgignpgloakglfadfldhnphndhg" Version="2.0" IssueInstant="2011-04-16T11: 19:47Z" ProtocolBinding="urn:oasis:names:tc: SAML:2.0:bindings:HTTP-POST" ProviderName="samlsp.example.jp" IsPassive="false" AssertionConsumerServiceURL="https://www. samlsp.example.jp/a/g.example.jp/acs"><saml: Issuer>samlsp.example.jp/a/g.example. jp</saml:Issuer><samlp:NameIDPolicy AllowCreate="true" Format="urn:oasis:names: tc:SAML:1.1:nameid-format:unspecified" /></samlp:AuthnRequest> Copyright © 2014 OpenID Foundation Japan. All Rights Reserved. <samlp:Response ID="s2cc2b844fbfe543063c49b45ec60b6f75948037f1" InResponseTo=" bjlljiaibddgppbdpimacgdfeigppjndmcfnddni" Version="2.0" IssueInstant="2011-04-16T07:22:16Z" Destination="https://www.samlsp.example.jp/a/g.example.jp/acs"><saml:Issuer>http://idp.example.com: 8180/openam</saml:Issuer><samlp:Status><samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status: Success"> </samlp:StatusCode></samlp:Status><saml:Assertion ID="s2b91a971b66a1864a4e95b0fff617f3ddd47f3098" IssueInstant="2011-04-16T07:22:16Z" Version="2.0"><saml:Issuer>http://idp.example.com: 8180/openam</saml:Issuer><ds:Signature><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http: //www.w3.org/2001/10/xml-exc-c14n#"/><ds:SignatureMethod Algorithm="http://www.w3. org/2000/09/xmldsig#rsa-sha1"/><ds:Reference URI="#s2b91a971b66a1864a4e95b0fff617f3ddd47f3098" ><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds: Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds: DigestValue>QiBEfNqkRNiCUnMceZa5JoxdeMY=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds: SignatureValue> JMEZqoncBBpvoWoxUqMI79CpADROnDb9sil9q7j9F0j0DXpVtR92hksF7eByMpA+XSOtEv655SDyjz+rnoeoff OgtsiIbOAG+/a0+JUXpN27VXVJV3+WEDyAfwSqAT3a3KzF+7ssGOkEK8Ktpog8Sx60iOW4iNKGz8rcZ8pDq q0= </ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate> MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQ swCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmEx DDAK BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0BAQ EFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of+RkDsaN/igkA vV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNYJs0Vo5+IgjxuEWnjnnV gHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/UQzPKTPTYi9upbFXlrAKMwt Ff2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC/FfwWigmr W0Y0Q== </ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml:Subject><saml:NameID Format=" urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" NameQualifier="http://idp.example.com: 8180/openam">taro</saml:NameID><saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm: bearer"><saml:SubjectConfirmationData InResponseTo="bjlljiaibddgppbdpimacgdfeigppjndmcfnddni" NotOnOrAfter="2011-04-16T07:32:16Z" Recipient="https://www.samlsp.example.jp/a/g.example.jp/acs" /></saml:SubjectConfirmation></saml:Subject><saml:Conditions NotBefore="2011-04-16T07:12:16Z" NotOnOrAfter="2011-04-16T07:32:16Z"><saml:AudienceRestriction><saml:Audience>samlsp.example.jp/a/g. example.jp</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AuthnStatement AuthnInstant="2011-04-16T07:22:16Z" SessionIndex="s2e924fdac5fe15c4559aab5118be38caed9dc7f01" ><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes: PasswordProtectedTransport</saml:AuthnContextClassRef></saml:AuthnContext></saml: AuthnStatement></saml:Assertion></samlp:Response>
  26. 26. OAuth 2.0 Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  27. 27. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  28. 28. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  29. 29. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  30. 30. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  31. 31. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  32. 32. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  33. 33. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  34. 34. OpenID Connect Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  35. 35. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  36. 36. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  37. 37. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  38. 38. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  39. 39. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  40. 40. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  41. 41. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  42. 42. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  43. 43. SCIM Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  44. 44. (SCIM の説明の前に) LDAPってご存知ですよね? LDAP LDAP サーバー クライアント LDAP Copyright © 2014 OpenID Foundation Japan. All Rights Reserved. LDAP サーバー LDAP サーバー LDIF uid: taro ... LDAP LDAP
  45. 45. SCIM は JSON + HTTP な ID プロビジョニングプロトコル SCIM SCIM サーバー クライアント JSON HTTP { userName : taro ... } Copyright © 2014 OpenID Foundation Japan. All Rights Reserved. SCIM サーバー SCIM サーバー HTTP HTTP
  46. 46. SCIM とは ● http://www.simplecloud.info/ ● System for Cross-domain Identity Management ● クラウドサービスにおける ID 管理の仕様 ● ユーザー情報やグループ情報を JSON で表現し、HTTP でリク エスト/レスポンスを送受信 (REST API) ○ 策定中の最新仕様(SCIM 2.0)では XML に関する仕様は 削除された ● 実装例 ○ Salesforce、その他クラウドサービス Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  47. 47. SCIM の JSON スキーマ { "schemas": ["urn:ietf:params:scim:schemas:core:2.0: User"], "userName": "taro@example.jp", "displayName": "NIHON Taro", "nickName": "taro", "meta": { 省略 } Copyright © 2014 OpenID Foundation Japan. All Rights Reserved. }
  48. 48. SCIM で利用する HTTP メソッド 操作HTTPメソッド 追加(生成) POST 更新PUT (replace) PATCH (modify) 削除DELETE 取得/検索GET Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  49. 49. SCIM API の認証・認可 ● SCIM の API にだれでもアクセスできたら困るので、API の利 用を制御するための認証・認可の仕組みが必要 ● しかし、SCIMでは認証・認可に関する仕様は定義されていない ○ HTTP ベースだから、認証・認可も既存の HTTP ベースの 仕様を使ってね、というスタンス ○ 仕様では OAuth 2.0 を推奨と記載されている ● 実サービスでも、認証・認可は OAuth 2.0 で実装されている場 合が多い。そのため、SCIM API を利用する場合は OAuth 2.0 の知識も必要 Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  50. 50. SCIM リクエスト $ curl -H "Authorization: Bearer AccessToken(※)" -H "Content-Type: application/scim+json" -X "POST" -d ‘{ JSON (詳細は省略) } ’ https://scimsv.example.jp/v1/Users ※アクセストークン(AccessToken)は事前に取得しておく Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  51. 51. SCIM レスポンス HTTP/1.1 201 Created Content-Type: application/scim+json Location: https://scimsv.example.jp/v1/Users/2819c223- 7f76-453a-919d-413861904646 { JSON (詳細は省略) } Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  52. 52. まとめ Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  53. 53. 各プロトコルの学習のポイント ● 用語を把握する ○ 登場人物(IdP、OP、SP、RP)と役割を覚える ● HTTP の知識重要 ● プログラミング言語 ○ 言語はなんでもいいので、簡単な Web アプリ や HTTP クライアントが作れると捗る ○ Unix/Linux のコマンドでもOK! Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  54. 54. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  55. 55. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  56. 56. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  57. 57. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  58. 58. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  59. 59. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
  60. 60. Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

×