66
OpenID Connect / OAuth / SAML / SCIM 技術解説 一般社団法人 OpenIDファウンデーション・ジャパンエバンジェリスト nov エクスジェン・ネットワークス株式会社 野村 健太郎

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

Embed Size (px)

DESCRIPTION

 

Citation preview

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

OpenID Connect / OAuth /SAML / SCIM

技術解説

一般社団法人 OpenIDファウンデーション・ジャパンエバンジェリスト nov

エクスジェン・ネットワークス株式会社 野村 健太郎

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

目次

● 最新クラウドサービス利用事例

● プロトコル四天王

● SAML 解説

● OAuth 2.0 解説

● OpenID Connect 解説

● SCIM 解説

● まとめ

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

最新クラウドサービス

利用事例(Greeの場合)

Page 4: SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014
Page 5: SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014
Page 6: SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014
Page 7: SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014
Page 8: SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

Digital Identity 界のプロトコル四天王

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

本日紹介するプロトコル

OpenID Connect

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

本日紹介するプロトコル

OpenID Connect

フェデレーション プロトコル

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

本日紹介するプロトコル

ID プロビジョニングプロトコル

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

本日紹介するプロトコル

OpenID Connect

コンシューマー系 エンタープライズ系

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

フェデレーションの基本的な仕組み

OpenID Connect

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

フェデレーションの基本的な仕組み

サービス(SP/RP)

認証サービス (IdP/OP)

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

認証

フェデレーションの基本的な仕組み

サービス(SP/RP)

認証サービス (IdP/OP)

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

認証

フェデレーションの基本的な仕組み

サービス(SP/RP)

認証サービス (IdP/OP)

認証情報属性情報

● ユーザーは認証サービス(IdP/OPなど)で認証を受ける● サービス(SP/RP)は、認証サービスが保持しているユーザー

の「認証情報」や「属性情報」が欲しい

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

認証

フェデレーションのパターン(1)

サービス(SP/RP)

認証サービス (IdP/OP)

認証情報属性情報

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

認証

フェデレーションのパターン(2)

認証サービス (IdP/OP)

サービス(SP/RP)

認証情報属性情報

認可コード

アーティファクト

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

プロトコルで決められていること

● 認証情報や属性情報の表現形式

○ JSON○ XML

● 認証情報や属性情報のやりとりの方法

○ HTTP■ メソッド (GET、POSTなど)■ パラメーター

○ SOAP

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SAML

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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、各ベンダの製品

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SAML 信頼関係の構築

IdP SP

メタデータ(証明書、URL など)

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SAML シーケンス

IdP SPInitiate

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SAML シーケンス

IdP SP

SAML 認証リクエスト

Initiate

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SAML シーケンス

IdP SP

認証(ID/PW 送信)

SAML 認証リクエスト

Initiate

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SAML シーケンス

IdP SP

認証(ID/PW 送信)

SAML 認証レスポンス

SAML 認証リクエスト

Initiate

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SAML シーケンス

IdP SP

認証(ID/PW 送信)

SAML 認証レスポンス

SP へのログイン完了

SAML 認証リクエスト

Initiate

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SAML 認証リクエスト/認証レスポンス

● リクエスト (かなり省略)

● レスポンス (かなり省略)<samlp:Response デジタル署名情報

<saml:NameID>[email protected]</saml:NameID></samlp:Response>

<samlp:AuthnRequest ID="ppndejggibkmmdgignpgloakglfadfldhnphndhg" IssueInstant="2014-09-16T11:19:47Z Version="2.0" <saml:Issuer>https://sp.example.com</saml:Issuer></samlp:AuthnRequest>

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

実際のリクエスト/レスポンス

<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>

リクエスト レスポンス<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+rnoeoffOgtsiIbOAG+/a0+JUXpN27VXVJV3+WEDyAfwSqAT3a3KzF+7ssGOkEK8Ktpog8Sx60iOW4iNKGz8rcZ8pDqq0=</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09wZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAKBgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of+RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNYJs0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/UQzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDAcGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC/FfwWigmrW0Y0Q==</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>

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

OAuth 2.0

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

OpenID Connect

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SCIM

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

(SCIM の説明の前に) LDAPってご存知ですよね?

LDAP サーバーLDAPクライアント

LDAP サーバー

LDAP サーバー

LDIF

uid: taro...

LDAP

LDAP

LDAP

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SCIM は JSON + HTTP なID プロビジョニングプロトコル

SCIM サーバーSCIMクライアント

HTTPJSON

{ userName : taro ...}

SCIM サーバー

SCIM サーバー

HTTP

HTTP

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

● http://www.simplecloud.info/● System for Cross-domain Identity Management● クラウドサービスにおける ID 管理の仕様

● ユーザー情報やグループ情報を JSON で表現し、HTTP でリク

エスト/レスポンスを送受信 (REST API)○ 策定中の最新仕様(SCIM 2.0)では XML に関する仕様は

削除された

● 実装例

○ Salesforce、その他クラウドサービス

SCIM とは

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SCIM の JSON スキーマ

{ "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "userName": "[email protected]", "displayName": "NIHON Taro", "nickName": "taro", "meta": { 省略

}}

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SCIM で利用する HTTP メソッド

操作 HTTPメソッド

追加(生成) POST

更新PUT (replace)PATCH (modify)

削除 DELETE

取得/検索 GET

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SCIM API の認証・認可

● SCIM の API にだれでもアクセスできたら困るので、API の利

用を制御するための認証・認可の仕組みが必要

● しかし、SCIMでは認証・認可に関する仕様は定義されていない

○ HTTP ベースだから、認証・認可も既存の HTTP ベースの

仕様を使ってね、というスタンス

○ 仕様では OAuth 2.0 を推奨と記載されている

● 実サービスでも、認証・認可は OAuth 2.0 で実装されている場

合が多い。そのため、SCIM API を利用する場合は OAuth 2.0 の知識も必要

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SCIM リクエスト

$ curl \ -H "Authorization: Bearer AccessToken(※)" \ -H "Content-Type: application/scim+json" \ -X "POST" \ -d \ ‘{ JSON (詳細は省略)

} ’ \ https://scimsv.example.jp/v1/Users

※アクセストークン(AccessToken)は事前に取得しておく

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

SCIM レスポンス

HTTP/1.1 201 CreatedContent-Type: application/scim+jsonLocation: https://scimsv.example.jp/v1/Users/2819c223-

7f76-453a-919d-413861904646

{ JSON (詳細は省略)}

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

まとめ

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

各プロトコルの学習のポイント

● 用語を把握する

○ 登場人物(IdP、OP、SP、RP)と役割を覚える

● HTTP の知識重要

● プログラミング言語

○ 言語はなんでもいいので、簡単な Web アプリ

や HTTP クライアントが作れると捗る

○ Unix/Linux のコマンドでもOK!

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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

Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.

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