• Like
SCIM and OpenID Connect Intro
Upcoming SlideShare
Loading in...5
×

SCIM and OpenID Connect Intro

  • 2,583 views
Uploaded on

Prepared for a new working group to be formed in OpenID Foundation Japan

Prepared for a new working group to be formed in OpenID Foundation Japan

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,583
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
66
Comments
0
Likes
4

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. SCIM と OpenID Connect の概要 2012年10月18日 工藤達雄 株式会社野村総合研究所 IT基盤インテグレーション事業本部 DIソリューション事業部
  • 2. SCIMとOpenID Connect利用企業A社 ID管理システム SCIM APIに従い、 SaaS A社 社内の サービスAの 人事情報 ユーザー追加・ ユーザー追加・ システム 変更・削除 変更・削除 ユーザー・ プロビジョニングAPI プロビ プロビジョニン (SCIM Server) ジョニング グ機能(SCIM システム Client) OpenID Connectで認 エンドユーザー向けWeb 証結果・属性 アプリケーション 社内の 情報要求 ユーザー追加・ (OpenID Connect RP) 管理者 変更・削除 SSO / ID連携API アクセス (OpenID 管理 Connect IdP) システム SCIM APIに従い、 サービスBの SaaS B社 ユーザー追加・ 変更・削除 社内IDで サービスAの ユーザー・ ログイン 利用 プロビジョニングAPI (SCIM Server) OpenID Connectで ID管理結果・属性情 報要求 サービスBの エンドユーザー向けWeb エンドユーザー 利用 アプリケーション (OpenID Connect RP) Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved.
  • 3. SCIM 2
  • 4. これまでのアイデンティティ・プロビジョニングAPIの標準化動向SPML (Service Provisioning 一方、「クラウド・サービス」の Markup Language) 仕様 多くがユーザー・プロビジョニン OASIS プロビジョニング・サービ ス技術委員会(PSTC) が策定し グAPIを提供しているが、標準 た、 XMLによってサービス・プロ 的な仕様が存在しない ビジョニング情報を交換するため のフレームワーク 「クラウド・サービス」ごとにAPIが ▪ 2001年のPSTC発足後、2003年 まちまちであり、互換性がな い にバージョン1.0を、2006年にバー ジョン2.0をOASIS標準として承認 そのためユーザー企業が自社ID しかし、仕様の複雑さや、対応す 管理システムからプロビジョニン る製品・サービスが少ないことか グを行うためには、たとえばユー ら、普及していない ザの追加・削除といった単純な操 ▪ SPML 2.0の確定以降、PSTCは 作で あっても、クラウド・サービス 実質的に活動を停止し、2012年8 月に閉会 ごとに異なるAPIに対応しなくて はならない Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 3
  • 5. SCIM (System for Cross-domain Identity Management)http://www.simplecloud.info/アイデンティティ管理のための「スキーマ」と「プロトコル」を定義 スキーマ ▪ ユーザーやグループなどのJSON/XML表現 ▪ 要件に応じて拡張可能 プロトコル ▪ RESTful API ▪ CRUD (生成/参照/更新/削除)、検索、ディスカバリ、一括処理 SaaS A社 JSON/XML SCIM Service Provider利用企業A社 (RESTful API) プロビ SCIM ジョニング Consumer SaaS B社 システム JSON/XML SCIM Service Provider (RESTful API) Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 4
  • 6. 例: ユーザー生成リクエスト /Users POST /Users HTTP/1.1エンドポイント Host: example.com にPOST Accept: application/json Content-Type: application/jsonJSON形式 JSON形式 Authorization: Bearer h480djs93hd8のレスポンス にてユーザー を要求 Content-Length: ... 情報を送信 { "schemas":["urn:scim:schemas:core:1.0"], API認可情報 "userName":"bjensen", "externalId":"bjensen", "name":{ユーザー情報 "formatted":"Ms. Barbara J Jensen III", "familyName":"Jensen", "givenName":"Barbara“ } } SCIM SCIM Service Provider Consumer リクエスト (RESTful API) Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 5
  • 7. 例: ユーザー生成レスポンスステータス HTTP/1.1 201 Createdコード 201 Content-Type: application/json Location: https://example.com/v1/Users/2819c223-7f76-453a-919d-413861904646このユーザー ETag: W/"e180ee84f0671b1"情報のURL { "schemas":["urn:scim:schemas:core:1.0"], "id":"2819c223-7f76-453a-919d-413861904646", "externalId":"bjensen", "meta":{ "created":"2011-08-01T21:32:44.882Z", "lastModified":"2011-08-01T21:32:44.882Z", "location":"https://example.com/v1/Users/2819c223-7f76-453a-919d-生成された 413861904646", ユーザー "version":"W¥/¥"e180ee84f0671b1¥""情報の表現 }, "name":{ "formatted":"Ms. Barbara J Jensen III", "familyName":"Jensen", "givenName":"Barbara" }, "userName":"bjensen" } SCIM SCIM Service Provider Consumer レスポンス (RESTful API) Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 6
  • 8. Core Schemaユーザー/グループを表現する最小限のスキーマと、スキー マの拡張モデルを定義スキーマ 既存のクラウドサービス事業者のAPI、Portable Contacts、LDAPな どを参考に定義 ▪ ユーザー、エンタープライズ・ユーザー、グループ、サービス・プロバイダの設定 情報、リソース JSONおよびXMLへのバインディングを規定 ▪ スキーマを表現できない場合 (JSON) を考慮し、schemas属性を定義スキーマ拡張モデル LDAPのObjectClassの考え方を援用 しかしLDAPと異なり、スキーマの継承はない Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 7
  • 9. SCIM Protocolアプリケーション・レベルのAPIを定義HTTPメソッドを利用 GET: リソース取得(全体/部分) POST: 新規リソース生成 PUT: リソースの変更(指定した内容で置き換え) PATCH: リソースの変更(部分更新)、パスワード変更 DELETE: リソース削除Well knownなエンドポイントを定義 /Users, /Groups, /ServiceProviderConfigs, /Schemas, /BulkAPI認可はOAuth 2.0を推奨 Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 8
  • 10. これまでの流れ 2010年7月  Cloud Identity Summitのアンカンファレンスの「Cloud LDAP」セッションを契機に、UnboundID、Salesforce.com、Google、 Ping Identityのキーパーソンが同名プロジェクト(のちに「Cloud Directory」に変更)を立ち上げ 2010年11月  IIW (Internet Identity Workshop) 11 にて、上記のメンバーおよびMicrosoft他によるF2Fを開催 2011年4月  名称をSCIMに変更し、草案を一般に公開 2011年5月  IIW 12 にて議論  UnboundID, Salesforce.com, Cisco, Ping IdentityがOWF Contributor Agreementに署名 2011年12月  バージョン1.0仕様をリリース 2012年3月  BoF at IETF 83 2012年6月  WG chartered 2012年7月  バージョン1.1 仕様をリリース  第一回WG会合 @ IETF84 Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 9
  • 11. SCIMのマイルストーン年 マイルストーン2012 •6月: Initial adoption of SCIM use cases, as a living document •6月: Initial adoption of SCIM core schema •8月: Initial adoption of SCIM restful interface draft •11月: Initial adoption of SCIM LDAP inetOrgPerson mapping draft •12月: Snapshot version of SCIM use cases to IESG as Informational (possibly) •12月: Proposal for client targeting of SCIM endpoints2013 •2月: SCIM core schema to IESG as Proposed Standard •5月: SCIM restful interface to IESG as Proposed Standard •6月: SCIM LDAP inetOrgPerson mapping to IESG as Informational •7月: Initial adoption of SCIM SAML bindings draft •8月: Client targeting of SCIM endpoints to IESG as Proposed Standard •9月: Snapshot update of SCIM use cases as Informational (possibly) •11月: SCIM SAML bindings to IESG as Proposed Standard2014 •1月: Work completed; discuss re-charter Source: System for Cross-domain Identity Management (scim) – Charter https://datatracker.ietf.org/wg/scim/charter/ Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 10
  • 12. OpenID Connect 11
  • 13. OpenID Connectとはhttp://openid.net/connectOpenIDの次期バージョンOAuth 2.0 仕様をベースに拡張 「シンプルな認証結果と属性情報の取得」 (後述) の範囲であれば、 一般的なOAuth 2.0認可 + API アクセスのフローとほぼ同様メッセージ形式にJSONを採用加えてJWT (JSON Web Token) を活用することにより、 署名と暗号化をサポート仕様のモジュラー化 かんたんなことをシンプルにする一方、複雑なことも実現可能に Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 12
  • 14. OpenID Connectの系図 Source: http://civics.com/openid-connect-webinar/ Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 13
  • 15. OpenID Connectのフロー(概要) 7.(オプション): ユーザー属性 7 8. (オプショ OpenIDクレーム クレーム ソース 提供要求 ン): ユーザープロバイダ 8 属性提供 リライング・ 5. ユーザー属性 パーティ 提供要求 5 6 . ユーザー (RP) 属性提供OpenID ユーザー UserInfo 6 クライアントプロバイダ 情報 エンドポイント 2. トークン 2 (クレーム) 取得要求 (ブラウザの 4 リダイレクト) 4. アクセス・ トークンとID エンドユーザー トークンを返却 認可 (ブラウザの エンドポイント リダイレクト) 認可 サーバー 1. サービスに 9 . サービス アクセス 提供 1 9 3 3. ユーザー 認証・認可 Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 14
  • 16. OpenID Connectによる認証結果の要求・取得の例 (*) 1. WebブラウザからRPの「ログイン」ボタンをクリック OpenID トークン OpenID プロバイダ 認可 エンドポイント リライング・ サーバー クライアント パーティ 認可 エンドポイント (RP) example.comの IDでログイン!<a href="https://server.example.com/authorize?grant_type=code&scope=openid&client_id=3214244&state=af1Ef">example.comのIDでログイン!</a>(*) 本ページ以降の例示は http://www.thread-safe.com/2012/07/how-simple-is-openid-connect-basic.html を元に作図 Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 15
  • 17. OpenID Connectによる認証結果の要求・取得の例2. WebブラウザがOPに認可リクエストを送信OpenID トークン OpenIDプロバイダ 認可 エンドポイント リライング・(OP) サーバー クライアント パーティ 認可 エンドポイント (RP) GET /authorize?grant_type=code&scope=openid&client_ id=3214244&state=af1Ef HTTP/1.1 Host: server.example.com Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 16
  • 18. OpenID Connectによる認証結果の要求・取得の例3. OPがユーザーを認証OpenID トークン OpenIDプロバイダ 認可 エンドポイント リライング・(OP) サーバー クライアント パーティ 認可 エンドポイント (RP)何らかの方法でユーザーを認証例: ID/パスワード、OTP、クッキー、… Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 17
  • 19. OpenID Connectによる認証結果の要求・取得の例4. OPがWebブラウザをRPにリダイレクトOpenID トークン OpenIDプロバイダ 認可 エンドポイント リライング・(OP) サーバー クライアント パーティ 認可 エンドポイント (RP) Location: https://client.example.com/cb?code=8rFowi dZfjt&state=af1Ef OPがcodeを 返却 Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 18
  • 20. OpenID Connectによる認証結果の要求・取得の例4. WebブラウザがRPに、OPから受け取ったcodeを送信OpenID トークン OpenIDプロバイダ 認可 エンドポイント リライング・(OP) サーバー クライアント パーティ 認可 エンドポイント (RP)GET /cb?code=8rFowidZfjt&state=af1Ef HTTP/1.1Host: client.example.com Webブラウザ 経由でRPに codeが渡る Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 19
  • 21. OpenID Connectによる認証結果の要求・取得の例5. RPがOPにcodeを送信し、id_tokenをリクエストOpenID トークン OpenIDプロバイダ 認可 エンドポイント リライング・(OP) サーバー クライアント パーティ 認可 エンドポイント (RP)GET /token?code=8rFowidZfjt HTTP/1.1Host: server.example.comAuthorization: Basic … codeを送信 Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 20
  • 22. OpenID Connectによる認証結果の要求・取得の例6. OPがRPに、codeにひもづくid_token他を返却OpenID トークン OpenIDプロバイダ 認可 エンドポイント リライング・(OP) サーバー クライアント パーティ 認可 エンドポイント (RP) { "access_token": "SlAV32hkKG", アクセス・ "token_type": "Bearer", トークン (*) "refresh_token": "8xLOxBtZp8", "expires_in": 3600, "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. eyJpc3MiOiJodHRwczovL3NlcnZlci5leGFtcGxlLmNvbSIsInVz ZXJfaWQiOiIyNDgyODk3NjEwMDEiLCJhdWQiOiJodHRwOi 8vY2iwiZXhwIjoxxpZW50LmV4YW1wbGUuY29tIMzExMjgxOTcwfSA. eDesUD0vzDH3T1G3liaTNOrfaeWYjuRCEPNXVtaazNQ" id_token }(*) UserInfoやその他のAPIアクセスに使用。本例では省略 Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 21
  • 23. OpenID Connectによる認証結果の要求・取得の例7. RPがid_tokenを復号し、OPが返却したuser_idを取得eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NlcnZlci5leGFtcGxlLmNvbSIsInVz RPが受け取ったZXJfaWQiOiIyNDgyODk3NjEwMDEiLCJhdWQiOiJodHRwOi id_tokenの値8vY2iwiZXhwIjoxxpZW50LmV4YW1wbGUuY29tIMzExMjgxOTcwfSA.eDesUD0vzDH3T1G3liaTNOrfaeWYjuRCEPNXVtaazNQ <?php 認証結果 $res = json_decode($response, true); ( base64urlエンコードされた $id_token = $res[id_token]; JWT Claims Set) $id_array = mb_split(".", $id_token); $id_body = base64url_decode($id_array[1]); ?> RP側での復号処理 (例はPHPによる実装例。 ピリオド “.” で3分割し、2番目の { パートをbase64urlデコード) "iss": "https://server.example.com", "user_id": "248289761001", 認証結果 "aud": "3214244", (JWT Claims "iat": 1311195570, Set) "exp": 1311281970 user_idの値 = } OPからRPに 払い出された ユーザー識別子 Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 22
  • 24. OpenID Connectによる認証結果の要求・取得の例8. RPがWebブラウザにコンテンツを返却OpenID トークン OpenIDプロバイダ 認可 エンドポイント リライング・(OP) サーバー クライアント パーティ 認可 エンドポイント (RP)OPから払い出されたユーザーID: 248289761001 にひもづくユーザーがすでに存在するか?Yes → 「ようこそ、太郎さん!」No → 「既存ユーザーとのひもづけ or 新規登録をお願いします」 Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 23
  • 25. OpenID Connectの今後のロードマップ現在Implementer’s Draftが公開中今後最終仕様にOpenID Connectをサポートする製品・サービスベンダー (予定含む) Gluu、IBM、Layer7、Microsoft、野村総合研究所、Ping Identity、 Vordel、… AOL、Google、日本経済新聞社、PayPal、楽天、Salesforce.com、 Yahoo! JAPAN、… Copyright © 2012 Nomura Research Institute, Ltd. All Rights Reserved. 24