OpenIDファウンデーション・ジャパン 日本ネットワークセキュ … Connect_20131220.pdf · OpenID ConnectとSCIMの エンタープライズ利用ガイドライン
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
-
Upload
nov-matake -
Category
Technology
-
view
470 -
download
2
description
Transcript of SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
OpenID Connect / OAuth /SAML / SCIM
技術解説
一般社団法人 OpenIDファウンデーション・ジャパンエバンジェリスト nov
エクスジェン・ネットワークス株式会社 野村 健太郎
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
目次
● 最新クラウドサービス利用事例
● プロトコル四天王
● SAML 解説
● OAuth 2.0 解説
● OpenID Connect 解説
● SCIM 解説
● まとめ
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
最新クラウドサービス
利用事例(Greeの場合)
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Digital Identity 界のプロトコル四天王
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
本日紹介するプロトコル
OpenID Connect
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
本日紹介するプロトコル
OpenID Connect
フェデレーション プロトコル
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
本日紹介するプロトコル
ID プロビジョニングプロトコル
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
本日紹介するプロトコル
OpenID Connect
コンシューマー系 エンタープライズ系
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
フェデレーションの基本的な仕組み
OpenID Connect
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
フェデレーションの基本的な仕組み
サービス(SP/RP)
認証サービス (IdP/OP)
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
認証
フェデレーションの基本的な仕組み
サービス(SP/RP)
認証サービス (IdP/OP)
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
認証
フェデレーションの基本的な仕組み
サービス(SP/RP)
認証サービス (IdP/OP)
認証情報属性情報
● ユーザーは認証サービス(IdP/OPなど)で認証を受ける● サービス(SP/RP)は、認証サービスが保持しているユーザー
の「認証情報」や「属性情報」が欲しい
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
認証
フェデレーションのパターン(1)
サービス(SP/RP)
認証サービス (IdP/OP)
認証情報属性情報
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
認証
フェデレーションのパターン(2)
認証サービス (IdP/OP)
サービス(SP/RP)
認証情報属性情報
認可コード
アーティファクト
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
プロトコルで決められていること
● 認証情報や属性情報の表現形式
○ JSON○ XML
● 認証情報や属性情報のやりとりの方法
○ HTTP■ メソッド (GET、POSTなど)■ パラメーター
○ SOAP
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
SAML
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、各ベンダの製品
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
SAML 信頼関係の構築
IdP SP
メタデータ(証明書、URL など)
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
SAML シーケンス
IdP SPInitiate
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
SAML シーケンス
IdP SP
SAML 認証リクエスト
Initiate
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
SAML シーケンス
IdP SP
認証(ID/PW 送信)
SAML 認証リクエスト
Initiate
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
SAML シーケンス
IdP SP
認証(ID/PW 送信)
SAML 認証レスポンス
SAML 認証リクエスト
Initiate
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
SAML シーケンス
IdP SP
認証(ID/PW 送信)
SAML 認証レスポンス
SP へのログイン完了
SAML 認証リクエスト
Initiate
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>
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>
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
OAuth 2.0
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
OpenID Connect
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
SCIM
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
(SCIM の説明の前に) LDAPってご存知ですよね?
LDAP サーバーLDAPクライアント
LDAP サーバー
LDAP サーバー
LDIF
uid: taro...
LDAP
LDAP
LDAP
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
SCIM は JSON + HTTP なID プロビジョニングプロトコル
SCIM サーバーSCIMクライアント
HTTPJSON
{ userName : taro ...}
SCIM サーバー
SCIM サーバー
HTTP
HTTP
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 とは
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": { 省略
}}
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
SCIM で利用する HTTP メソッド
操作 HTTPメソッド
追加(生成) POST
更新PUT (replace)PATCH (modify)
削除 DELETE
取得/検索 GET
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 の知識も必要
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)は事前に取得しておく
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 (詳細は省略)}
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
まとめ
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
各プロトコルの学習のポイント
● 用語を把握する
○ 登場人物(IdP、OP、SP、RP)と役割を覚える
● HTTP の知識重要
● プログラミング言語
○ 言語はなんでもいいので、簡単な Web アプリ
や HTTP クライアントが作れると捗る
○ Unix/Linux のコマンドでもOK!
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.
Copyright © 2014 OpenID Foundation Japan. All Rights Reserved.