「[[マイクロソフト系技術情報 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] **Technical Overview [#pd627a26] **Profiles [#kb883fb8] 特定のユースケースを実現するための組み合わせ方を定義。 **Bindings [#g931e8e8] SAMLのメッセージを実際の通信プロトコル~ (HTTPなど)にマッピングする方法を定義。 **Core(Assertions and Protocols) [#c88e28ae] -認証情報を表すXMLのスキーマ(SAML Assertions)と、 -メッセージ交換のプロトコル(SAML Protocols) を定義。 **SAML Metadata [#q8f094d8] IdPやSPに関する情報を表現するための~ XMLのスキーマを定義(IdPとSPの信頼関係を構築)。 **XML Signature Syntax and Processing [#tfaf9dfe] 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/ **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 **参考 [#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国際標準]], [[:認証基盤]], [[:クレームベース認証]]