SAML Bindings
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>SAMLの仕様を読む。]]
* 目次 [#ad46c7fc]
#contents
*概要 [#z9f38776]
汎用認証サイトに[[SAML2.0を実装>SAMLを実装する。]]するた...
-ターゲットはSP Initiated な Web Browser SSO Profileに絞...
-ココに書いた情報は、SAML の Bindingsの範囲。
**Introduction [#wed0d0d0]
SAML要求 / 応答メッセージ交換の
-標準メッセージング
-通信プロトコルへのマッピング
は、SAML Bindingsと呼ばれる。
***Protocol Binding Concepts [#f84e3264]
-特定の通信プロトコル<FOO>にマッピングした~
SAML Bindingsは、SAML <FOO> Bindingと呼ばれる。
-この仕様の目的は、
--SAML準拠ソフトウェアが確実に相互運用できるように、Bindi...
--特に指定のない限り、Bindingは、以下から派生したメッセー...
---samlp:RequestAbstractType
---samlp:StatusResponseType
***Notation [#d05e5774]
-[[技術文書中での Shall / Should / May]]
-この仕様では従来のXML名前空間プレフィックスが使用される。
-, etc.
**Specifying Additional Protocol Bindings [#ub832a14]
追加仕様策定のガイドラインなど(割愛)
*以下、詳細 [#e7b6f548]
SAML規格の一部として指定されているBindingを定義
*General Considerations [#w2339fbb]
SAML規格として定義された全てのBindingの規範的特性
**Use of RelayState [#p3c73a7b]
-幾つかのBindingは、状態情報を保存し伝達~
するための "RelayState" メカニズムを定義する。
-SAML要求メッセージにRelayStateデータが付随している場合、
--レスポンダはRelayStateメカニズムもサポートするBindingを...
--応答には、要求で受け取った正確なRelayStateデータを対応...
**Security [#y1b00846]
-特に明記しない限り、セキュリティステートメントはすべての...
-Bindingは、セキュリティ機能について追加のステートメント...
***Use of SSL 3.0 or TLS 1 [#fa06471a]
-クライアントがSSL 3.0 または TLS 1.0 を使用する際、
-サーバはX.509 v 3証明書を使用
***Data Origin Authentication [#cb058118]
-メッセージに関連するSAMLリクエスタとSAMLレスポンダの両方...
-ベースとなるProtocolで利用できる認証メカニズムを利用して...
-仲介者を通過するBindingでは、SAML自体で認証メカニズム提...
***Message Integrity [#fc426ad0]
-SAML要求とSAML応答の両方のメッセージ完全性はOPTIONAL
-ベースとなるProtocolで利用できるメカニズムを利用して、完...
-仲介者を通過するBindingでは、メッセージ・インテグリティ...
***Message Confidentiality [#hd4a1258]
-SAML要求とSAML応答の両方のメッセージ機密性はOPTIONAL
-ベースとなるProtocolで利用できるメカニズムを利用して、機...
-仲介者を通過するBindingでは、Protocolのメカニズムは要件...
**Security Considerations [#t1f9e979]
展開の前に、脆弱性について分析すべき。
-以下のコンテキスト上での、
--プロトコル交換
--展開環境
-メカニズムの組合せ
--認証
--メッセージの完全性
--メッセージの機密性
-詳細な議論についてはいを参照
--特定のプロトコル処理規則[SAMLCore]
--SAMLセキュリティ問題文書[SAMLSecure]
*HTTP Redirect Binding [#y8ab8bbc]
SAML Protocol メッセージをURLパラメタで送信できるメカニズ...
-URLパラメタでXMLメッセージを送信するには、
--特殊エンコードが必要で
--文字列長の制限がある。
-[[HTTP POST Binding>#n7409552]]またはHTTP Artifact Binding
--2つの異なるBindingを組み合わせて要求 / 応答メッセージを...
--HTTP Redirect Bindingより大規模で複雑なメッセージ送信可...
**Required Information [#e3b491f8]
|#|項目|説明|h
|1|Identification|urn:oasis:names:tc:SAML:2.0:bindings:HT...
|2|Contact information|security-services-comment@lists.oa...
|3|Updates|None.|
**Overview [#g6dc0067]
UAを仲介者として使用して通信する必要がある場合を対象とす...
**RelayState [#k05bc8de]
RelayStateが含まれてもよい。
-値は長さが80バイトを超えてはならない。
-他の保護から独立してエンティティによって完全性保護される...
-値は長さ制限から、署名は現実的でないので、チェックサム・...
-SAMLリクエスタがSAML要求メッセージにRelayStateデータを
--添付する場合、SAMLレスポンダは、
---RelayStateをサポートするBindingを選択して応答する必要...
---受け取ったデータを、そのままレスポンスの中の対応するRe...
--添付しない場合、SAMLレスポンダは、~
Profileまたは事前の合意の使用に基づいてRelayStateデータを...
**Message Encoding [#h2a04080]
XMLをURLにエンコードする方法をSAMLEncodingに指定する。
-既定値は、urn:oasis:names:tc:SAML:2.0:bindings:URL-Encod...
-このBindingをサポートする全てのエンドポイントは[[DEFLATE...
-[[コチラの例>SAMLの仕様を読む。#a31dde47]]が参考になる。
***DEFLATE Encoding [#t5ca2a0a]
DEFLATE圧縮方式を介してURLにエンコード(署名されたコンテ...
-シリアル化手順
--<ds:Signature>要素がある場合、コレを削除(メッセージ長...
-明記されていないが、先ず、~
XML宣言のエンコーディングでエンコード。
--DEFLATE圧縮メカニズムでSAMLを圧縮する。
--オクテットをBase64エンコードで文字列化する~
(改行または他の空白は結果から取り除く)。
--Base64をURLエンコードし、クエリ文字列のSAMLRequestパラ...
--RelayStateをURLエンコードし、クエリ文字列のRelayStateパ...
--署名を追加する。
---署名アルゴリズム識別子[XMLSig]のURI表現を~
URLエンコードし、クエリ文字列のSigAlgパラメタとしてURLに...
DSAwithSHA1 - http://www.w3.org/2000/09/xmldsig#dsa-sha1~
RSAwithSHA1 - http://www.w3.org/2000/09/xmldsig#rsa-sha1
---次のいずれかの方法でクエリ文字列を構築する。
SAMLRequest=value&RelayState=value&SigAlg=value
SAMLResponse=value&RelayState=value&SigAlg=value
---上記のクエリ文字列をASCIIエンコードし、署名アルゴリズ...
---オクテットをBase64エンコードで文字列化する(改行または...
---Base64をURLエンコードし、クエリ文字列のSignatureパラメ...
-ポイント
--仕様に明記されていないが、XML → UTF-8エンコーディング →...
---クラウドとの認証連携 | Think IT(シンクイット)~
https://thinkit.co.jp/story/2011/02/18/1999?page=0%2C2
>ヘッダも必要(UTF-8で)。
<?xml version="1.0" encoding="UTF-8"?>
---EZ-NET: XmlDocument を XML 宣言付きの整形された String...
http://program.station.ez-net.jp/special/handbook/csharp/...
>XmlWriterSettingsを使用して、UTF-8、インデント無しを指定。
---C# - SAMLリクエストについて|teratail~
https://teratail.com/questions/50890
>ヘッダに合わせて、(UTF-8で)エンコーディングする。~
(ココでは、InnerXmlを使用しているが、POST Bindingの場合...
× byte[] samlRequestBytes = Encoding.Unicode.GetBytes(sa...
〇 byte[] samlRequestBytes = Encoding.UTF8.GetBytes(saml...
--URLエンコードは、デフォルトの方式以外のものが用いられて...
このため、メタデータを用いてサポートするURLエンコード方法...
--クエリ文字列パラメタ順は、Bindingによって規定されていな...
署名を検証する場合は、前述の「クエリ文字列を構築」順序と...
--クエリ文字列パラメタ値が空文字列の場合は、パラメタ自体...
**Message Exchange [#pf970c8d]
-HTTP RedirectによるOAuth Dance的なシーケンスの説明
-ポイントは、<samlp:AuthnRequest>要素のIsPassive属性 が
--true の場合、IdPはユーザとの対話が禁止される
--false の場合、IdPはユーザとの対話が禁止される
>と言う点のみ。
***HTTP and Caching Considerations [#yb5c2bee]
HTTPレスポンダ(SAMLレスポンダ)は、以下のヘッダーフィー...
Cache-Control: no-cache, no-store
Pragma: no-cache
***Security Considerations [#va9236b8]
-UAの仲介者が存在するため、認証、完全性、機密性について~
トランスポート層を頼ることができないので必要に応じて署名...
--署名を介したメッセージレベルの認証と完全性の保護に依存。
--UAの仲介者に対するメッセージの機密性はサポートしない。
-機密性はOPTIONALで、必要な場合は、SSL 3.0 または TLS 1.0...
-クエリ文字列パラメタは、HTTPの Refererヘッダや、HTTPログ...
**Error Reporting [#d6f32744]
SAMLレスポンダが、要求とメッセージ交換を行うことを拒否す...
-SAML応答メッセージ~
第2レベルの<samlp:StatusCode>要素で以下の値を返す。~
urn:oasis:names:tc:SAML:2.0:status:RequestDenied
-HTTP応答メッセージ
--HTTP エラーステータスコードを使用しない。
--理由は、UAはHTTPのエラーステータスコードしか理解しない...
**Metadata Considerations [#sda6422b]
特定のプロトコルまたはプロファイルに対する~
単一 or 個別(要求 / 応答)のURLエンドポイントを示す。
**Example SAML Message Exchange Using HTTP Redirect [#m2a...
割愛(Single Logout Protocolの例なので)
*HTTP POST Binding [#n7409552]
HTML Form ControlのBase64エンコードコンテンツ内で送信する...
(「[[OAuth 2.0 Form Post Response Mode]]」みたいな仕様)
**Required Information [#e506d9e3]
|#|項目|説明|h
|1|Identification|urn:oasis:names:tc:SAML:2.0:bindings:HT...
|2|Contact information|security-services-comment@lists.oa...
|3|Updates|SAML V1.1 の Browser/POST profileを効果的に置...
**Overview [#ba9c4837]
[[HTTP Redirect Binding>#g6dc0067]]のHTTP RedirectをForm ...
**RelayState [#le12e451]
[[HTTP Redirect Binding>#k05bc8de]]と同じ。
**Message Encoding [#r153e192]
[[HTTP Redirect Binding>#y8ab8bbc]] の [[Message Encoding...
-明記されていないが、先ず、~
XML宣言のエンコーディングでエンコード。
-その後、Base64エンコードのみ行う。~
--DEFLATE圧縮~
文字列長は気にしないので、圧縮は不要。
--URLエンコード~
form-urlencodedは自動的に行われる。
-HTML Form Control
--method属性 : POST
--action属性 : 配信先HTTPエンドポイント
--name属性
---SAMLRequest(SAML Requestの場合)
---SAMLResponse(SAML Responseの場合)
-Submitの方法
--UAがサポートする任意の方法を利用可能。
--通常、Client Side Scriptなどを使用する。
-[[コチラの例>SAMLの仕様を読む。#a31dde47]]が参考になる。
**Message Exchange [#w2478c85]
[[HTTP Redirect Binding>#pf970c8d]]のHTTP RedirectをForm ...
***HTTP and Caching Considerations [#e7fbfcc4]
[[HTTP Redirect Binding>#yb5c2bee]]と同じ。
***Security Considerations [#h6983bfb]
基本的に[[HTTP Redirect Binding>#va9236b8]]と同じだが、以...
-署名は、(SAMLRequest or SAMLResponse) and RelayStateで別...
(SAMLRequest or SAMLResponse)メッセージが署名されている場...
--Root SAML要素のDestination XML属性に、UAに指示したURLを...
--受信者は、値がメッセージが受信された場所と一致すること...
-署名が別々になるため、個々の完全性保護は可能だが~
(SAMLRequest or SAMLResponse) and RelayState の組合せの完...
-POSTの場合、HTTPの Refererヘッダや、HTTPログに公開される...
**Error Reporting [#s26fc8a7]
[[HTTP Redirect Binding>#d6f32744]]と同じ。
**Metadata Considerations [#u39ef6c4]
[[HTTP Redirect Binding>#sda6422b]]と同じ。
**Example SAML Message Exchange Using HTTP POST [#d9380c71]
同様に割愛(Single Logout Protocolの例なので)
*HTTP Artifact Binding [#wb578c5b]
-[[OAuth]]の[[Authorization Code>OAuth#yfeb403d]]みたいな...
-CodeをTokenに変換するように、ArtifactをSAML Assertionな...
**Required Information [#hb862898]
|#|項目|説明|h
|1|Identification|urn:oasis:names:tc:SAML:2.0:bindings::H...
|2|Contact information|security-services-comment@lists.oa...
|3|Updates|SAML V1.1 の Browser/Artifact profile を効果的...
**Overview [#g49ecc7b]
[[HTTP Redirect Binding>#y8ab8bbc]]、[[HTTP POST Binding>...
UAを仲介者として使用して通信する必要があるが、メッセージ...
**Message Encoding [#s7e77f89]
Artifactは以下のBindingを使用して送信されるため、これらに...
-[[HTTP Redirect Binding>#h2a04080]]
-[[HTTP POST Binding>#r153e192]]
***RelayState [#of675e51]
RelayStateは以下のBindingを使用して送信されるため、これら...
-[[HTTP Redirect Binding>#k05bc8de]]
-[[HTTP POST Binding>#le12e451]]
***URL Encoding [#e6c3f2f5]
[[HTTP Redirect Binding>#y8ab8bbc]]の場合と同様、~
URLエンコードし、SAMLartというクエリ文字列パラメタに配置
***Form Encoding [#c0669775]
[[HTTP POST Binding>#n7409552]]の場合と同様、~
SAMLartというパラメタに配置すダケで良い。
**Artifact Format [#e107247f]
-短く不透明な文字列
-SAML_artifact := B64(TypeCode EndpointIndex RemainingArt...
--TypeCode := Byte1Byte2(SAML 2.0は0x0004)
--EndpointIndex := Byte1Byte2
--RemainingArtifact := [[SAMLリクエスタのストアとリンクす...
***Required Information [#h0c65b53]
|#|項目|説明|h
|1|Identification|urn:oasis:names:tc:SAML:2.0:artifact-04|
|2|Contact information|security-services-comment@lists.oa...
|3|Updates|None.|
***Format Details [#v9c1086f]
-SAMLリクエスタは以下を「TypeCode := 0x0004」ストアに保持...
--RemainingArtifact := SourceID MessageHandle(PK)
---SourceID := 20 byte の 発行者の識別URL の SHA-1 ハッシュ
---MessageHandle := 16-20 byte の RFC1750のランダム文字列
--Message := <samlp:ArtifactResponse>で返却されるメッセー...
-RemainingArtifact中のSourceIDとEndpointIndexを使用して、~
<samlp:ArtifactResolve>送信先を特定することが可能。
**Message Exchange [#wbde090d]
-以下でArtifact(SAMLart)のみを送信し、
--[[HTTP Redirect Binding>#pf970c8d]]
--[[HTTP POST Binding>#w2478c85]]
-メッセージ本体は、下記でSAML要求 / 応答メッセージ交換を...
--<samlp:ArtifactResolve>
--<samlp:ArtifactResponse>
***HTTP and Caching Considerations [#w3e367bf]
[[HTTP Redirect Binding>#yb5c2bee]]・[[HTTP POST Binding>...
***Security Considerations [#w6cd9ccf]
-UAを仲介者として使用して通信しない同期通信のため、
--SAMLリクエスタとSAMLレスポンダの両方の認証が必要(署名...
--Artifactは、使い捨てのシングルユースセマンティクスの強...
--機密性は、SSL 3.0 または TLS 1.0か、追加のメカニズムを...
-RelayStateについては、[[HTTP POST Binding>#h6983bfb]]と...
**Error Reporting [#kf157290]
-基本は、[[HTTP Redirect Binding>#d6f32744]]・[[HTTP POST...
-追加で、<samlp:ArtifactResolve>を理解できる場合、~
<samlp:ArtifactResponse>に以下を含める必要がある。
urn:oasis:names:tc:SAML:2.0:status:Success
**Metadata Considerations [#qb8bf280]
-基本は、[[HTTP Redirect Binding>#sda6422b]]・[[HTTP POST...
-追加で、<samlp:ArtifactResolve>を処理するインデックス付...
**Example SAML Message Exchange Using HTTP Artifact [#y8d...
同様に割愛(Single Logout Protocolの例なので)
*参考 [#r131996d]
https://docs.oasis-open.org/security/saml/v2.0/saml-bindi...
1 Introduction
1.1 Protocol Binding Concepts
1.2 Notation
2 Guidelines for Specifying Additional Protocol Bindings
3 Protocol Bindings
3.1 General Considerations
3.1.1 Use of RelayState
3.1.2 Security
3.1.2.1 Use of SSL 3.0 or TLS 1
3.1.2.2 Data Origin Authentication
3.1.2.3 Message Integrity
3.1.2.4 Message Confidentiality
3.1.2.5 Security Considerations
3.2 SAML SOAP Binding
3.2.1 Required Information
3.2.2 Protocol-Independent Aspects of the SAML SOAP Bind...
3.2.2.1 Basic Operation
3.2.2.2 SOAP Headers
3.2.3 Use of SOAP over HTTP
3.2.3.1 HTTP Headers
3.2.3.2 Caching
3.2.3.3 Error Reporting
3.2.3.4 Metadata Considerations
3.2.3.5 Example SAML Message Exchange Using SOAP over HTTP
3.3 Reverse SOAP (PAOS) Binding
3.3.1 Required Information
3.3.2 Overview
3.3.3 Message Exchange
3.3.3.1 HTTP Request, SAML Request in SOAP Response
3.3.3.2 SAML Response in SOAP Request, HTTP Response
3.3.4 Caching
3.3.5 Security Considerations
3.3.5.1 Error Reporting
3.3.5.2 Metadata Considerations
3.4 HTTP Redirect Binding
3.4.1 Required Information
3.4.2 Overview
3.4.3 RelayState
3.4.4 Message Encoding
3.4.4.1 DEFLATE Encoding
3.4.5 Message Exchange
3.4.5.1 HTTP and Caching Considerations
3.4.5.2 Security Considerations
3.4.6 Error Reporting
3.4.7 Metadata Considerations
3.4.8 Example SAML Message Exchange Using HTTP Redirect
3.5 HTTP POST Binding
3.5.1 Required Information
3.5.2 Overview
3.5.3 RelayState
3.5.4 Message Encoding
3.5.5 Message Exchange
3.5.5.1 HTTP and Caching Considerations
3.5.5.2 Security Considerations
3.5.6 Error Reporting
3.5.7 Metadata Considerations
3.5.8 Example SAML Message Exchange Using HTTP POST
3.6 HTTP Artifact Binding
3.6.1 Required Information
3.6.2 Overview
3.6.3 Message Encoding
3.6.3.1 RelayState
3.6.3.2 URL Encoding
3.6.3.3 Form Encoding
3.6.4 Artifact Format
3.6.4.1 Required Information
3.6.4.2 Format Details
3.6.5 Message Exchange
3.6.5.1 HTTP and Caching Considerations
3.6.5.2 Security Considerations
3.6.6 Error Reporting
3.6.7 Metadata Considerations
3.6.8 Example SAML Message Exchange Using HTTP Artifact
3.7 SAML URI Binding
3.7.1 Required Information
3.7.2 Protocol-Independent Aspects of the SAML URI Binding
3.7.2.1 Basic Operation
3.7.3 Security Considerations
3.7.4 MIME Encapsulation
3.7.5 Use of HTTP URIs
3.7.5.1 URI Syntax
3.7.5.2 HTTP and Caching Considerations
3.7.5.3 Security Considerations
3.7.5.4 Error Reporting
3.7.5.5 Metadata Considerations
3.7.5.6 Example SAML Message Exchange Using an HTTP URI
4 References
Appendix A. Registration of MIME media type application/...
Appendix B. Acknowledgments
Appendix C. Notices
----
Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認...
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>SAMLの仕様を読む。]]
* 目次 [#ad46c7fc]
#contents
*概要 [#z9f38776]
汎用認証サイトに[[SAML2.0を実装>SAMLを実装する。]]するた...
-ターゲットはSP Initiated な Web Browser SSO Profileに絞...
-ココに書いた情報は、SAML の Bindingsの範囲。
**Introduction [#wed0d0d0]
SAML要求 / 応答メッセージ交換の
-標準メッセージング
-通信プロトコルへのマッピング
は、SAML Bindingsと呼ばれる。
***Protocol Binding Concepts [#f84e3264]
-特定の通信プロトコル<FOO>にマッピングした~
SAML Bindingsは、SAML <FOO> Bindingと呼ばれる。
-この仕様の目的は、
--SAML準拠ソフトウェアが確実に相互運用できるように、Bindi...
--特に指定のない限り、Bindingは、以下から派生したメッセー...
---samlp:RequestAbstractType
---samlp:StatusResponseType
***Notation [#d05e5774]
-[[技術文書中での Shall / Should / May]]
-この仕様では従来のXML名前空間プレフィックスが使用される。
-, etc.
**Specifying Additional Protocol Bindings [#ub832a14]
追加仕様策定のガイドラインなど(割愛)
*以下、詳細 [#e7b6f548]
SAML規格の一部として指定されているBindingを定義
*General Considerations [#w2339fbb]
SAML規格として定義された全てのBindingの規範的特性
**Use of RelayState [#p3c73a7b]
-幾つかのBindingは、状態情報を保存し伝達~
するための "RelayState" メカニズムを定義する。
-SAML要求メッセージにRelayStateデータが付随している場合、
--レスポンダはRelayStateメカニズムもサポートするBindingを...
--応答には、要求で受け取った正確なRelayStateデータを対応...
**Security [#y1b00846]
-特に明記しない限り、セキュリティステートメントはすべての...
-Bindingは、セキュリティ機能について追加のステートメント...
***Use of SSL 3.0 or TLS 1 [#fa06471a]
-クライアントがSSL 3.0 または TLS 1.0 を使用する際、
-サーバはX.509 v 3証明書を使用
***Data Origin Authentication [#cb058118]
-メッセージに関連するSAMLリクエスタとSAMLレスポンダの両方...
-ベースとなるProtocolで利用できる認証メカニズムを利用して...
-仲介者を通過するBindingでは、SAML自体で認証メカニズム提...
***Message Integrity [#fc426ad0]
-SAML要求とSAML応答の両方のメッセージ完全性はOPTIONAL
-ベースとなるProtocolで利用できるメカニズムを利用して、完...
-仲介者を通過するBindingでは、メッセージ・インテグリティ...
***Message Confidentiality [#hd4a1258]
-SAML要求とSAML応答の両方のメッセージ機密性はOPTIONAL
-ベースとなるProtocolで利用できるメカニズムを利用して、機...
-仲介者を通過するBindingでは、Protocolのメカニズムは要件...
**Security Considerations [#t1f9e979]
展開の前に、脆弱性について分析すべき。
-以下のコンテキスト上での、
--プロトコル交換
--展開環境
-メカニズムの組合せ
--認証
--メッセージの完全性
--メッセージの機密性
-詳細な議論についてはいを参照
--特定のプロトコル処理規則[SAMLCore]
--SAMLセキュリティ問題文書[SAMLSecure]
*HTTP Redirect Binding [#y8ab8bbc]
SAML Protocol メッセージをURLパラメタで送信できるメカニズ...
-URLパラメタでXMLメッセージを送信するには、
--特殊エンコードが必要で
--文字列長の制限がある。
-[[HTTP POST Binding>#n7409552]]またはHTTP Artifact Binding
--2つの異なるBindingを組み合わせて要求 / 応答メッセージを...
--HTTP Redirect Bindingより大規模で複雑なメッセージ送信可...
**Required Information [#e3b491f8]
|#|項目|説明|h
|1|Identification|urn:oasis:names:tc:SAML:2.0:bindings:HT...
|2|Contact information|security-services-comment@lists.oa...
|3|Updates|None.|
**Overview [#g6dc0067]
UAを仲介者として使用して通信する必要がある場合を対象とす...
**RelayState [#k05bc8de]
RelayStateが含まれてもよい。
-値は長さが80バイトを超えてはならない。
-他の保護から独立してエンティティによって完全性保護される...
-値は長さ制限から、署名は現実的でないので、チェックサム・...
-SAMLリクエスタがSAML要求メッセージにRelayStateデータを
--添付する場合、SAMLレスポンダは、
---RelayStateをサポートするBindingを選択して応答する必要...
---受け取ったデータを、そのままレスポンスの中の対応するRe...
--添付しない場合、SAMLレスポンダは、~
Profileまたは事前の合意の使用に基づいてRelayStateデータを...
**Message Encoding [#h2a04080]
XMLをURLにエンコードする方法をSAMLEncodingに指定する。
-既定値は、urn:oasis:names:tc:SAML:2.0:bindings:URL-Encod...
-このBindingをサポートする全てのエンドポイントは[[DEFLATE...
-[[コチラの例>SAMLの仕様を読む。#a31dde47]]が参考になる。
***DEFLATE Encoding [#t5ca2a0a]
DEFLATE圧縮方式を介してURLにエンコード(署名されたコンテ...
-シリアル化手順
--<ds:Signature>要素がある場合、コレを削除(メッセージ長...
-明記されていないが、先ず、~
XML宣言のエンコーディングでエンコード。
--DEFLATE圧縮メカニズムでSAMLを圧縮する。
--オクテットをBase64エンコードで文字列化する~
(改行または他の空白は結果から取り除く)。
--Base64をURLエンコードし、クエリ文字列のSAMLRequestパラ...
--RelayStateをURLエンコードし、クエリ文字列のRelayStateパ...
--署名を追加する。
---署名アルゴリズム識別子[XMLSig]のURI表現を~
URLエンコードし、クエリ文字列のSigAlgパラメタとしてURLに...
DSAwithSHA1 - http://www.w3.org/2000/09/xmldsig#dsa-sha1~
RSAwithSHA1 - http://www.w3.org/2000/09/xmldsig#rsa-sha1
---次のいずれかの方法でクエリ文字列を構築する。
SAMLRequest=value&RelayState=value&SigAlg=value
SAMLResponse=value&RelayState=value&SigAlg=value
---上記のクエリ文字列をASCIIエンコードし、署名アルゴリズ...
---オクテットをBase64エンコードで文字列化する(改行または...
---Base64をURLエンコードし、クエリ文字列のSignatureパラメ...
-ポイント
--仕様に明記されていないが、XML → UTF-8エンコーディング →...
---クラウドとの認証連携 | Think IT(シンクイット)~
https://thinkit.co.jp/story/2011/02/18/1999?page=0%2C2
>ヘッダも必要(UTF-8で)。
<?xml version="1.0" encoding="UTF-8"?>
---EZ-NET: XmlDocument を XML 宣言付きの整形された String...
http://program.station.ez-net.jp/special/handbook/csharp/...
>XmlWriterSettingsを使用して、UTF-8、インデント無しを指定。
---C# - SAMLリクエストについて|teratail~
https://teratail.com/questions/50890
>ヘッダに合わせて、(UTF-8で)エンコーディングする。~
(ココでは、InnerXmlを使用しているが、POST Bindingの場合...
× byte[] samlRequestBytes = Encoding.Unicode.GetBytes(sa...
〇 byte[] samlRequestBytes = Encoding.UTF8.GetBytes(saml...
--URLエンコードは、デフォルトの方式以外のものが用いられて...
このため、メタデータを用いてサポートするURLエンコード方法...
--クエリ文字列パラメタ順は、Bindingによって規定されていな...
署名を検証する場合は、前述の「クエリ文字列を構築」順序と...
--クエリ文字列パラメタ値が空文字列の場合は、パラメタ自体...
**Message Exchange [#pf970c8d]
-HTTP RedirectによるOAuth Dance的なシーケンスの説明
-ポイントは、<samlp:AuthnRequest>要素のIsPassive属性 が
--true の場合、IdPはユーザとの対話が禁止される
--false の場合、IdPはユーザとの対話が禁止される
>と言う点のみ。
***HTTP and Caching Considerations [#yb5c2bee]
HTTPレスポンダ(SAMLレスポンダ)は、以下のヘッダーフィー...
Cache-Control: no-cache, no-store
Pragma: no-cache
***Security Considerations [#va9236b8]
-UAの仲介者が存在するため、認証、完全性、機密性について~
トランスポート層を頼ることができないので必要に応じて署名...
--署名を介したメッセージレベルの認証と完全性の保護に依存。
--UAの仲介者に対するメッセージの機密性はサポートしない。
-機密性はOPTIONALで、必要な場合は、SSL 3.0 または TLS 1.0...
-クエリ文字列パラメタは、HTTPの Refererヘッダや、HTTPログ...
**Error Reporting [#d6f32744]
SAMLレスポンダが、要求とメッセージ交換を行うことを拒否す...
-SAML応答メッセージ~
第2レベルの<samlp:StatusCode>要素で以下の値を返す。~
urn:oasis:names:tc:SAML:2.0:status:RequestDenied
-HTTP応答メッセージ
--HTTP エラーステータスコードを使用しない。
--理由は、UAはHTTPのエラーステータスコードしか理解しない...
**Metadata Considerations [#sda6422b]
特定のプロトコルまたはプロファイルに対する~
単一 or 個別(要求 / 応答)のURLエンドポイントを示す。
**Example SAML Message Exchange Using HTTP Redirect [#m2a...
割愛(Single Logout Protocolの例なので)
*HTTP POST Binding [#n7409552]
HTML Form ControlのBase64エンコードコンテンツ内で送信する...
(「[[OAuth 2.0 Form Post Response Mode]]」みたいな仕様)
**Required Information [#e506d9e3]
|#|項目|説明|h
|1|Identification|urn:oasis:names:tc:SAML:2.0:bindings:HT...
|2|Contact information|security-services-comment@lists.oa...
|3|Updates|SAML V1.1 の Browser/POST profileを効果的に置...
**Overview [#ba9c4837]
[[HTTP Redirect Binding>#g6dc0067]]のHTTP RedirectをForm ...
**RelayState [#le12e451]
[[HTTP Redirect Binding>#k05bc8de]]と同じ。
**Message Encoding [#r153e192]
[[HTTP Redirect Binding>#y8ab8bbc]] の [[Message Encoding...
-明記されていないが、先ず、~
XML宣言のエンコーディングでエンコード。
-その後、Base64エンコードのみ行う。~
--DEFLATE圧縮~
文字列長は気にしないので、圧縮は不要。
--URLエンコード~
form-urlencodedは自動的に行われる。
-HTML Form Control
--method属性 : POST
--action属性 : 配信先HTTPエンドポイント
--name属性
---SAMLRequest(SAML Requestの場合)
---SAMLResponse(SAML Responseの場合)
-Submitの方法
--UAがサポートする任意の方法を利用可能。
--通常、Client Side Scriptなどを使用する。
-[[コチラの例>SAMLの仕様を読む。#a31dde47]]が参考になる。
**Message Exchange [#w2478c85]
[[HTTP Redirect Binding>#pf970c8d]]のHTTP RedirectをForm ...
***HTTP and Caching Considerations [#e7fbfcc4]
[[HTTP Redirect Binding>#yb5c2bee]]と同じ。
***Security Considerations [#h6983bfb]
基本的に[[HTTP Redirect Binding>#va9236b8]]と同じだが、以...
-署名は、(SAMLRequest or SAMLResponse) and RelayStateで別...
(SAMLRequest or SAMLResponse)メッセージが署名されている場...
--Root SAML要素のDestination XML属性に、UAに指示したURLを...
--受信者は、値がメッセージが受信された場所と一致すること...
-署名が別々になるため、個々の完全性保護は可能だが~
(SAMLRequest or SAMLResponse) and RelayState の組合せの完...
-POSTの場合、HTTPの Refererヘッダや、HTTPログに公開される...
**Error Reporting [#s26fc8a7]
[[HTTP Redirect Binding>#d6f32744]]と同じ。
**Metadata Considerations [#u39ef6c4]
[[HTTP Redirect Binding>#sda6422b]]と同じ。
**Example SAML Message Exchange Using HTTP POST [#d9380c71]
同様に割愛(Single Logout Protocolの例なので)
*HTTP Artifact Binding [#wb578c5b]
-[[OAuth]]の[[Authorization Code>OAuth#yfeb403d]]みたいな...
-CodeをTokenに変換するように、ArtifactをSAML Assertionな...
**Required Information [#hb862898]
|#|項目|説明|h
|1|Identification|urn:oasis:names:tc:SAML:2.0:bindings::H...
|2|Contact information|security-services-comment@lists.oa...
|3|Updates|SAML V1.1 の Browser/Artifact profile を効果的...
**Overview [#g49ecc7b]
[[HTTP Redirect Binding>#y8ab8bbc]]、[[HTTP POST Binding>...
UAを仲介者として使用して通信する必要があるが、メッセージ...
**Message Encoding [#s7e77f89]
Artifactは以下のBindingを使用して送信されるため、これらに...
-[[HTTP Redirect Binding>#h2a04080]]
-[[HTTP POST Binding>#r153e192]]
***RelayState [#of675e51]
RelayStateは以下のBindingを使用して送信されるため、これら...
-[[HTTP Redirect Binding>#k05bc8de]]
-[[HTTP POST Binding>#le12e451]]
***URL Encoding [#e6c3f2f5]
[[HTTP Redirect Binding>#y8ab8bbc]]の場合と同様、~
URLエンコードし、SAMLartというクエリ文字列パラメタに配置
***Form Encoding [#c0669775]
[[HTTP POST Binding>#n7409552]]の場合と同様、~
SAMLartというパラメタに配置すダケで良い。
**Artifact Format [#e107247f]
-短く不透明な文字列
-SAML_artifact := B64(TypeCode EndpointIndex RemainingArt...
--TypeCode := Byte1Byte2(SAML 2.0は0x0004)
--EndpointIndex := Byte1Byte2
--RemainingArtifact := [[SAMLリクエスタのストアとリンクす...
***Required Information [#h0c65b53]
|#|項目|説明|h
|1|Identification|urn:oasis:names:tc:SAML:2.0:artifact-04|
|2|Contact information|security-services-comment@lists.oa...
|3|Updates|None.|
***Format Details [#v9c1086f]
-SAMLリクエスタは以下を「TypeCode := 0x0004」ストアに保持...
--RemainingArtifact := SourceID MessageHandle(PK)
---SourceID := 20 byte の 発行者の識別URL の SHA-1 ハッシュ
---MessageHandle := 16-20 byte の RFC1750のランダム文字列
--Message := <samlp:ArtifactResponse>で返却されるメッセー...
-RemainingArtifact中のSourceIDとEndpointIndexを使用して、~
<samlp:ArtifactResolve>送信先を特定することが可能。
**Message Exchange [#wbde090d]
-以下でArtifact(SAMLart)のみを送信し、
--[[HTTP Redirect Binding>#pf970c8d]]
--[[HTTP POST Binding>#w2478c85]]
-メッセージ本体は、下記でSAML要求 / 応答メッセージ交換を...
--<samlp:ArtifactResolve>
--<samlp:ArtifactResponse>
***HTTP and Caching Considerations [#w3e367bf]
[[HTTP Redirect Binding>#yb5c2bee]]・[[HTTP POST Binding>...
***Security Considerations [#w6cd9ccf]
-UAを仲介者として使用して通信しない同期通信のため、
--SAMLリクエスタとSAMLレスポンダの両方の認証が必要(署名...
--Artifactは、使い捨てのシングルユースセマンティクスの強...
--機密性は、SSL 3.0 または TLS 1.0か、追加のメカニズムを...
-RelayStateについては、[[HTTP POST Binding>#h6983bfb]]と...
**Error Reporting [#kf157290]
-基本は、[[HTTP Redirect Binding>#d6f32744]]・[[HTTP POST...
-追加で、<samlp:ArtifactResolve>を理解できる場合、~
<samlp:ArtifactResponse>に以下を含める必要がある。
urn:oasis:names:tc:SAML:2.0:status:Success
**Metadata Considerations [#qb8bf280]
-基本は、[[HTTP Redirect Binding>#sda6422b]]・[[HTTP POST...
-追加で、<samlp:ArtifactResolve>を処理するインデックス付...
**Example SAML Message Exchange Using HTTP Artifact [#y8d...
同様に割愛(Single Logout Protocolの例なので)
*参考 [#r131996d]
https://docs.oasis-open.org/security/saml/v2.0/saml-bindi...
1 Introduction
1.1 Protocol Binding Concepts
1.2 Notation
2 Guidelines for Specifying Additional Protocol Bindings
3 Protocol Bindings
3.1 General Considerations
3.1.1 Use of RelayState
3.1.2 Security
3.1.2.1 Use of SSL 3.0 or TLS 1
3.1.2.2 Data Origin Authentication
3.1.2.3 Message Integrity
3.1.2.4 Message Confidentiality
3.1.2.5 Security Considerations
3.2 SAML SOAP Binding
3.2.1 Required Information
3.2.2 Protocol-Independent Aspects of the SAML SOAP Bind...
3.2.2.1 Basic Operation
3.2.2.2 SOAP Headers
3.2.3 Use of SOAP over HTTP
3.2.3.1 HTTP Headers
3.2.3.2 Caching
3.2.3.3 Error Reporting
3.2.3.4 Metadata Considerations
3.2.3.5 Example SAML Message Exchange Using SOAP over HTTP
3.3 Reverse SOAP (PAOS) Binding
3.3.1 Required Information
3.3.2 Overview
3.3.3 Message Exchange
3.3.3.1 HTTP Request, SAML Request in SOAP Response
3.3.3.2 SAML Response in SOAP Request, HTTP Response
3.3.4 Caching
3.3.5 Security Considerations
3.3.5.1 Error Reporting
3.3.5.2 Metadata Considerations
3.4 HTTP Redirect Binding
3.4.1 Required Information
3.4.2 Overview
3.4.3 RelayState
3.4.4 Message Encoding
3.4.4.1 DEFLATE Encoding
3.4.5 Message Exchange
3.4.5.1 HTTP and Caching Considerations
3.4.5.2 Security Considerations
3.4.6 Error Reporting
3.4.7 Metadata Considerations
3.4.8 Example SAML Message Exchange Using HTTP Redirect
3.5 HTTP POST Binding
3.5.1 Required Information
3.5.2 Overview
3.5.3 RelayState
3.5.4 Message Encoding
3.5.5 Message Exchange
3.5.5.1 HTTP and Caching Considerations
3.5.5.2 Security Considerations
3.5.6 Error Reporting
3.5.7 Metadata Considerations
3.5.8 Example SAML Message Exchange Using HTTP POST
3.6 HTTP Artifact Binding
3.6.1 Required Information
3.6.2 Overview
3.6.3 Message Encoding
3.6.3.1 RelayState
3.6.3.2 URL Encoding
3.6.3.3 Form Encoding
3.6.4 Artifact Format
3.6.4.1 Required Information
3.6.4.2 Format Details
3.6.5 Message Exchange
3.6.5.1 HTTP and Caching Considerations
3.6.5.2 Security Considerations
3.6.6 Error Reporting
3.6.7 Metadata Considerations
3.6.8 Example SAML Message Exchange Using HTTP Artifact
3.7 SAML URI Binding
3.7.1 Required Information
3.7.2 Protocol-Independent Aspects of the SAML URI Binding
3.7.2.1 Basic Operation
3.7.3 Security Considerations
3.7.4 MIME Encapsulation
3.7.5 Use of HTTP URIs
3.7.5.1 URI Syntax
3.7.5.2 HTTP and Caching Considerations
3.7.5.3 Security Considerations
3.7.5.4 Error Reporting
3.7.5.5 Metadata Considerations
3.7.5.6 Example SAML Message Exchange Using an HTTP URI
4 References
Appendix A. Registration of MIME media type application/...
Appendix B. Acknowledgments
Appendix C. Notices
----
Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認...
ページ名: