「[[マイクロソフト系技術情報 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国際標準]], [[:認証基盤]], [[:クレームベース認証]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS