「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>SAML]] * 目次 [#a06b9ed3] #contents *概要 [#vbc3dabd] 汎用認証サイトにSAML2.0を実装するため仕様を読む。 *詳細 [#q988c4b2] **ロードマップ [#sf77f12f] ***Technical Overview [#pd627a26] SAML2.0 の 技術概要 ***Profiles [#kb883fb8] 特定のユースケースを実現するための組み合わせ方を定義。 -セキュリティ情報を伝達するためのSAMLの豊富で柔軟な 構文を使用および制限するための一連の特定の規則を定義。 -属性プロファイルの構文の側面をカバーするいくつかの関連する小さなスキーマ。 ***Bindings [#g931e8e8] -SAMLアサーションと要求/応答プロトコル・メッセージを交換する方法を定義 -SAMLのメッセージを実際の通信プロトコル(HTTPなど)にマッピングする方法を定義。 ***Core(Assertions and Protocols) [#c88e28ae] -認証、属性、許可情報を記述したプロトコルメッセージを伝達する~ XMLエンコードアサーションを作成するための構文とセマンティクス -アサーション用とプロトコル用のスキーマを定義する。 --認証情報を表す用のXMLのスキーマ(SAML Assertions) --メッセージ交換のプロトコル用のXMLのスキーマ(SAML Protocols) ***SAML Metadata [#q8f094d8] SPがIdPを利用するための情報を記述するためのXMLのスキーマを定義(IdPとSPの信頼関係を構築)。 ***Authentication Context [#s446c19b] 認証メカニズムを記述する認証コンテキスト宣言を記述するための構文を定義 ***XML Signature Syntax and Processing [#tfaf9dfe] XMLデジタル署名処理規則と構文 **ユースケース [#n6964f09] ***SAML参加者 [#b51c01cb] -最低限、SAML交換は、以下のシステム・エンティティ間で行われる。 --アサーティング・パーティ(SAMLオーソリティ)~ SAMLアサーションを行うシステム・エンティティ --SAMLリライング・パーティ~ 受け取ったアサーションを使用するシステム・エンティティ -SAMLリクエスタ / レスポンダ --アサーティング・パーティとリライング・パーティは、SAMLリクエスタにもレスポンダにもなりうる。 --アサーティング・パーティの情報に依存するという回答側の意向は、アサーティング・パーティとの信頼関係に依存 -SAMLシステム・エンティティのSAMLロール --Identityプロバイダの役割(IdP) --Serviceプロバイダの役割(SP) --属性機関の役割(...) -あとは、だいたい、[[OpenID Connect]]と同じ。 ***Web-SSO [#rc0fec8e] -マルチドメインWebシングルサインオン -SAMLが適用される最も重要なユースケース -これも、あとは、だいたい、[[OpenID Connect]]と同じ。 ***IDフェデレーション [#vb0acf73] -考慮しなければならない多くの質問 --ユーザーは、既存のローカルIDをサイトに持っているか? --ユーザーの連合IDの確立と終了は静的か?動的か? --ユーザーは連合IDの確立に明示的に同意する必要があるか? --ユーザーに関するID属性を交換する必要があるか? --IDフェデレーションは、SessionIDなどの識別子に依存するべきか? --情報が暗号化されるべきか?交換される情報のプライバシーは大きな関心事か? -連合ID機能を強化するための2つの機能 --フェデレーション名識別子の動的確立と管理をサポートする、新しい構成とメッセージ --プライバシー保護の特徴を持った2つの新しいタイプの名前識別子 -プロバイダー間のユーザー情報の維持および更新 --追加のフローは必要のないケース。 --追加のフローが必要になるケース。~ SAML V2.0メッセージ交換の外部で行われるケース ---IdPにおけるデータソースによって駆動され、 ---SPに伝播されるバッチまたはオフラインのIDフィードを利用 ***アカウントリンク [#q6750564] 連合IDをローカルIDと関連付けるプロセスは、アカウントリンクと呼ばれる。 -IdP検出機能を使用し、SPからIdPにアカウントリンクするかしないかをユーザに問う。 -ユーザが、フェデレーションに同意するとIdPにリダイレクトされる。 -IdPでSPのフェデレーション名識別子が生成され、IdP上のアカウントにリンクされる。 -IdPでSPは、後続のトランザクションでこの識別子を使用してユーザを参照する。 -IdPからSPにリダイレクトされた後、この識別子をSPのローカル・アカウントに関連付ける。 ※ 追加のサイトとアカウントリンクする場合は、~ 新たにフェデレーション名識別子を生成し、上記手順を繰り返す。 **アーキテクチャ [#n8e9f1a2] ***基本概念 [#ddcc00d7] -SAMLアサーション~ アサーティング・パーティが真実であると主張するプリンシパルに関する~ ステートメントを伝えるXMLスキーマによって定義されたアサーション。 --リライング・パーティからの要求に基づいてアサーティング・パーティによって作成される。 --特定の状況下では、アサーションは未承諾の方法でリライング・パーティに配信できる。 *以下、参考 [#f7980123] -SAML 実装仕様書 第Ⅰ編 概要、~ 用語及び参考文献 第 1.0 版~ 医療分野共通認証基盤整備コンソーシアム~ https://www.keieiken.co.jp/medit/pdf/240423/7-data.pdf -SAML認証に関する自分なりのまとめ~ なんとな~くしあわせ?の日記~ https://nantonaku-shiawase.hatenablog.com/entry/2016/07/13/081053 *SAMLの仕様 [#ed1566a6] -SAML Specifications | SAML XML.org~ http://saml.xml.org/saml-specifications **SAML 2.0 [#ta30f79c] -Security Assertion Markup Language (SAML) V2.0 Technical Overview - OASIS~ http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html >http://docs.oasis-open.org/security/saml/v2.0/saml-2.0-os.zip -以下を読むとイイらしい。~ >以下の[[Qiita>#ddcb6595]]を参考にすると、TechnicalOverview をざっと眺めて、~ どの Profile か選択してから Profile, binding, core と見ていくとイイらしい。 -https://www.oasis-open.org/committees/download.php/27819/sstc-saml-tech-overview-2.0-cd-02.pdf -https://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf -https://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf -https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf -https://www.w3.org/TR/xmldsig-core1/ -その他、ロードマップに含まれるもの。 --SAMLAuthnCxt~ http://docs.oasis-open.org/security/saml/v2.0/saml-authn-context-2.0-os.pdf --SAMLMeta~ http://docs.oasis-open.org/security/saml/v2.0/saml-metadata-2.0-os.pdf **SAML 1.1 [#bbfbf034] -http://www.oasis-open.org/committees/download.php/3400/oasis-sstc-saml-1.1-pdf-xsd.zip **SAML 1.0 [#nc13d236] -http://www.oasis-open.org/committees/download.php/2290/oasis-sstc-saml-1.0.zip -SAML 1.0(XML Security Assertion Markup Language)~ http://www.oasis-open.org/committees/security/#documents --Assertions and Protocol[SAML Core]~ http://www.oasis-open.org/committees/security/docs/cs-sstc-core-01.pdf ---SAMLのAssertionsのスキーマと要求/応答プロトコルを定めた仕様 --Bindings and Profiles[SAML Bind]~ http://www.oasis-open.org/committees/security/docs/cs-sstc-bindings-01.pdf ---SAMLをSOAPとHTTPにバインドする仕組みとSSOプロファイルの規定 --Security and Privacy Considerations[SAML Sec]~ http://www.oasis-open.org/committees/security/docs/cs-sstc-sec-consider-01.pdf ---SAMLのセキュリティ要件を考察したもの --Conformance Program Specification[SAML Conform]~ http://www.oasis-open.org/committees/security/docs/cs-sstc-conform-01.pdf ---SAMLの相互運用性を確保するために適合性要件をまとめたもの --Glossary[SAML Gross]~ http://www.oasis-open.org/committees/security/docs/cs-sstc-glossary-01.pdf *Qiita [#i80f170a] **SAML2.0ベースのSSOをわかりやすく解説してみる [#s11590a8] https://qiita.com/hanenao/items/27c1219d41828ec7532d **SAML2.0 ID プロバイダをつくるときの参考資料まとめ [#ab412874] https://qiita.com/suemoc/items/276e709aa51936689254 **SAML2.0でのシングルサインオン実装と戦うあなたに(.NET編) [#ddcb6595] https://qiita.com/ea54595/items/e932644477a45070690b *OSSTech [#i952f8dc] **OpenSSO社内勉強会第二回 - SAML - [#d78049dd] https://www.osstech.co.jp/_media/techinfo/opensso/osstech-opensso-study-02-saml.pdf **クラウド時代の シングルサインオン [#bc874894] https://www.osstech.co.jp/_media/techinfo/seminar/hbstudy-20110416-sso.pdf ***SAML概要 [#g7fa118a] -SAML : Secure Assertion Markup Lauguage -認証、認可、ユーザ属性情報などを[[XML]]で送受信するための仕様 -Webアプリの”認証処理”を、外部で代行してもらうための仕組み。 ***SAML用語 [#t41413c4] -SP/IdP --Identity Provider(IdP) ---認証・認可の情報を提供する役割を担う。~ ---IdPで認証されたユーザーは SP のサービスにアクセスできるようになる。 --Service Provider(SP) ---シングルサインオン対象の Web アプリケーションなどを意味する。 ---IdP が発行した認証・認可の情報に応じてクライアントにサービスを提供する。 -トラストサークル(Circle Of Trust)~ --IdP と SP の間で結ばれた信頼関係を意味する。 --シングルサインオンを実現するためには、~ IdP と SP との間で事前に信頼関係を結んでおく必要がある。 --IdP-SP 間でお互いを事前に登録し、お互いの証明書を交換する。 --一つのトラストサークル内に複数の IdP が存在することもある >※同じ言葉でも、他のプロトコルでは意味が違うことがあるので注意 -アカウント連携 --IdP のアカウントと SP のアカウントを紐付ける --NameID というユーザー識別子を IdP と SP 間で共有することで実現する --NameID には以下のものが使用される ---メールアドレス ---ユーザー名 ---GUIDなどの識別子 ---X.509 の Subject ***シーケンス [#of7ce633] -認証シーケンス --SP-initiated SSO ---ユーザーは最初にSPにアクセスし、IdPでの認証に成功した後に、再びSPにアクセスする。 --IdP-initiated SSO~ ---ユーザーは最初にIdPにアクセスし、IdPでの認証に成功した後にSPにアクセスする。 ---SAML RelayStateというパラメタに遷移先情報を埋め込む。 -メッセージの送受信方法 --HTTP Redirect/HTTP POST Binding ---IdP-SP間の直接的な通信が発生しない ---ブラウザが通信を中継する(HTTP Redirect/HTTP POST を利用) --HTTP Artifact Binding ---IdP-SP間の直接的な通信が発生する ---アサーションへのリファレンスである Artifact をブラウザを介してIdPとSPの間で送受信する。~ IdPと SP は Artifact を利用して直接相手に SAML 認証要求/認証応答メッセージを問い合わせる。 ---Artifact のデータサイズは小さい。 ***SAMLアサーション [#gb7ace7c] 事前に IdP の証明書を SP に登録しておく必要がある([[JWT]]みたいなもの) <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Version="2.0" ID="s2907181983bc6f588aeb045fca183d671224506ec" IssueInstant="2009-11-18T08:28:09Z"> アサーション発行者 アサーションのデジタル署名 ユーザー識別子(NameID) </saml:Assertion> ***認証要求・認証応答 [#uc6a393c] -認証要求(AuthnRequest)~ SPがIdPに対して、ユーザーの認証情報(アサーション)を要求するメッセージ <samlp:AuthnRequest ID=”xxx” Version=”2.0” Destination=”http://idp.osstech.co.jp/idp/sso”> 認証要求情報 </samlp:AuthnRequest> -認証応答(Response)~ IdPがSPにユーザーの認証情報(アサーション)を送付するメッセージ <samlp:Response ID=”xxx” Version=”2.0” Destination”http://sp.osstech.co.jp/sp/sso”> < saml:Assertion ...> アサーション </saml:Assertion> </samlp:AuthnRequest> **OpenAMのSAML利用時の認証方式の指定について [#l06dcf33] https://www.osstech.co.jp/_media/techinfo/openam/saml_authncontext_20150417.pdf *Cybozu [#a583f88d] **SAML認証ができるまで Cybozu Inside Out サイボウズエンジニアのブログ [#b96fa2da] http://developer.cybozu.co.jp/tech/?p=4224 SAMLはSecurity Assertion Markup Languageの略で、OASIS3によって策定された、~ 異なるセキュリティドメイン間で、認証情報を連携するための[[XML]]ベースの標準仕様。 ***SAML用語 [#n5a6bfc5] -認証情報を提供する側をIdentity Provider(IdP) -認証情報を利用する側をService Provider(SP) ***SAMLの仕様 [#ge5ed415] -SAML Core~ 認証情報を表す[[XML]]のスキーマ(SAML Assertions)と、~ メッセージ交換のプロトコル(SAML Protocols)を定義。 -SAML Bindings~ SAMLのメッセージを実際の通信プロトコル(HTTPなど)にマッピングする方法を定義。 -SAML Profiles~ 特定のユースケースを実現するための組み合わせ方を定義。 --SAML Assertions --SAML Protocols --SAML Bindings -SAML Metadata~ IdPやSPに関する情報を表現するための[[XML]]のスキーマを定義(IdPとSPの信頼関係を構築)。 *Wikipedia [#ha1d962a] **en [#hd81af2f] -Security Assertion Markup Language~ https://en.wikipedia.org/wiki/Security_Assertion_Markup_Language --SAML 1.1~ https://en.wikipedia.org/wiki/SAML_1.1 --SAML 2.0~ https://en.wikipedia.org/wiki/SAML_2.0 --SAML Metadata~ https://en.wikipedia.org/wiki/SAML_Metadata **ja [#re9f6f6f] -Security Assertion Markup Language~ https://ja.wikipedia.org/wiki/Security_Assertion_Markup_Language *OASIS [#j3a3bbae] OASISは「SGML Open」として1993年、 >主に「研修活動を通じたSGMLの採用促進を目的として」結成された、 SGMLツール業者の業界団体。 **SAML2.0 [#x7d05e41] -http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html -http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf **Reference [#r10980ea] ***用語集 [#obb9527d] -SAML仕様全体を通して使用される用語を規範的に定義 -可能な限り、用語は他のセキュリティ用語集で定義されている用語と一致させてある。 -SAMLGloss~ http://docs.oasis-open.org/security/saml/v2.0/saml-glossary-2.0-os.pdf ***適合要件 [#t20f88fb] -SAMLConform~ http://docs.oasis-open.org/security/saml/v2.0/saml-conformance-2.0-os.pdf ***セキュリティとプライバシーに関する考慮事項 [#k221450f] SAMLのセキュリティとプライバシーの特性について分析/説明。 -SAMLSec~ http://docs.oasis-open.org/security/saml/v2.0/saml-sec-consider-2.0-os.pdf ***Security [#kdc1295a] http://www.oasis-open.org/committees/security/. -SAMLExecOvr --エグゼクティブの概要 --SAMLとその主な利点についてエグゼクティブレベルで簡単に説明(非規範的な文書)。 -SAMLMDV1x~ SAML V1.x OASIS規格をサポートするSAMLエンティティ~ を記述するためのSAML V2.0メタデータ構成体の使用 -SAMLMDExtQ~ クエリ要求者用のSAMLメタデータ拡張 -SAMLProt3P --サードパーティの要求に対するSAMLプロトコルの拡張を定義 --SAMLプロトコルの拡張意図された応答受信者以外のエンティティによる要求を容易にするため -SAMLX509Attr~ X.509認証ベースシステム用のSAML属性共有プロファイル -SAMLXPathAttr~ 属性名としてXPath URIを使用するためのSAML属性の使用をプロファイル -SAMLErrata --正誤表 --SAML準拠ソフトウェアの実装者によって使用される可能性のある解釈へのガイド --SAML V2.0規格の矛盾や不明確である点の解釈を明確化する。 ***WSS [#wd2114df] http://www.oasis-open.org/committees/wss/ -WSS~ Web Services Security: SOAP Message Security 1.1 (WS-Security 2004). -WSSSAML~ Web Services Security: SAML Token Profile 1.1. OASIS WSS-TC, February 2006. ***XML(W3C) [#ce725f0c] -XMLSig~ XML署名の構文と処理~ http://www.w3.org/TR/xmldsig-core/ -XMLEnc~ XML暗号化の構文と処理~ http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/ ***Else [#r47c9a91] -ShibReqs~ Shibbolethの概要と要件~ http://shibboleth.internet2.edu/docs/draft-internet2-shibboleth-requirements-01.html -XACML~ OASIS拡張アクセス制御マークアップ言語(XACML)バージョン2.0~ http://www.oasis-open.org/committees/xacml **参考 [#j9247af2] -OASIS | Advancing open standards for the information society~ https://www.oasis-open.org/ -OASIS (組織) - Wikipedia~ https://ja.wikipedia.org/wiki/OASIS_(%E7%B5%84%E7%B9%94) ---- Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認証]]