「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>SAMLの仕様を読む。]]

* 目次 [#a891fbf2]
#contents

*概要 [#j44f1fbd]
汎用認証サイトに[[SAML2.0を実装>SAMLを実装する。]]するため仕様を読む。
-ターゲットはSP Initiated な Web Browser SSO Profileに絞る。
-ココに書いた情報は、SAML の Coreの範囲。

**Introduction [#d9e8c892]
-Core = Assertion自体、またはAssertionの対象に関して通信するために他のProtocol
-Assertionの構造と関連するProtocolのセットとシステムの管理に含まれる処理規則を定義する。

-[XMLNS]
--AssertionとProtocolメッセージはXML [XML]でエンコード
--XML名前空間を使用し、他のトランスポート構造に埋め込まれる。

-[SAMLBind]
SAMLバインディング仕様は、Protocolメッセージの埋め込みと転送のためのフレームワーク
SAMLバインディング仕様は、~
Protocolメッセージの埋め込みと転送のためのフレームワーク

-[SAMLProf]
SAMLプロファイル仕様は、
--特定のユースケースを達成するため、
--またはSAML機能を使用するときに相互運用性を達成するために、

>AssertionとProtocolを使用するためのProfileのベースラインセットを提供

-SAMLの用語と概念の詳細
--[SAMLTechOvw]: SAMLの技術概要
--[SAMLGloss]: SAML用語集

-特定の情報だけを含むファイル
--[SAML-XSD]: SAMLアサーションスキーマ
--[SAMLP-XSD]: プロトコルスキーマ

--[SAMLConform]:~
SAML適合文書は、SAML V2.0を構成するすべての仕様をリスト

***Notation [#nf9355fc]
-[[技術文書中での Shall / Should / May]]
-この仕様では従来のXML名前空間プレフィックスが使用される。
-, etc.

***Schema Organization and Namespaces [#u7d95af6]
-SAML Assertion構造
--[SAML-XSD]スキーマで定義されている。
--XML名前空間
 urn:oasis:names:tc:SAML:2.0:assertion

-SAML要求 / 応答Protocol構造
--[SAMLP-XSD]スキーマで定義されている。
--XML名前空間
 urn:oasis:names:tc:SAML:2.0:protocol

-XML署名
--[XMLSig]スキーマ
--XML名前空間
 http://www.w3.org/2000/09/xmldsig#

-XML暗号化
--[XMLEnc]スキーマ
--XML名前空間
 http://www.w3.org/2001/04/xmlenc#

-インポート
--[SAML-XSD]スキーマは、[SAMLP-XSD]スキーマにインポートされる。
--[XMLEnc]スキーマは、[SAML-XSD]スキーマにインポートされる。
--[XMLSig]スキーマは、[SAML-XSD]、[SAMLP-XSD]の両スキーマにインポートされる。

**Common Data Types [#o6a1f934]
-SAMLスキーマ全体に現れる一般的なデータ型の使用方法と解釈方法を定義
-XML Schema Datatypes仕様[Schema2]に組み込まれている。

***String Values [#f424e585]
SAML文字列値(xs:string)

-少なくとも1つの非空白文字で構成されている必要がある。

-比較
--厳密なバイナリ比較を使用して比較
--エンコーディングが異なる場合、~
[UNICODE-C]に変換して比較する。
--大文字と小文字を区別する。

-以下に依存しない。
--空白の正規化またはトリミング
--数字や通貨などのロケール固有の形式

-XMLに指定された正規化規則(XML勧告[XML] Section 2.11に記述されている)
--行末は、改行文字(ASCIIコード10Decimal)を使用
--すべての空白文字は空白に置き換えられる(ASCIIコード32Decimal)
--XML属性値は、[XML]セクション3.3.3で説明されているように正規化

-XML要素・属性値の照合順序や並べ替え順序は定義されない。~
故に、実装は値の特定のソート順に依存してはいけない。

***URI Values [#me05164d]
SAML URI参照値(xs:anyURI)

-少なくとも1つの非空白文字で構成されている必要がある。

-以下の識別子としてURI参照を広く使用している。
--ステータスコード
--フォーマットタイプ
--属性
--システムエンティティ名
--, etc.

***Time Values [#z8b5038f]
SAML時間値(xs:dateTime)

-タイムゾーンコンポーネントなしのUTC形式で表現する。
-ミリ秒よりも細かい時間分解能に頼るべきではない。
-うるう秒を指定する瞬間を生成してはならない。

***ID and ID Reference Values [#e3ce9939]
SAML ID単純型(xs:ID)

-要求、および応答のSAML識別子を宣言するために使用

-宣言が1つだけ存在すること(重複し無い事)

--重複の可能性は極、僅であることを保証する。

--2つのランダムに選択された識別子が同一である確率
---2-128以下でなければならず(MUST)
---2-160以下であるべき(SHOULD)。

--これは、長さが128-160ビットのランダム値で満たされる。

-xs:IDの識別子の参照
--xs:NCNameを使用できる。
--xs:IDREFは重複するため使用できない。

*詳細 [#qd77a3d5]

**[[SAML Protocols]] [#rdb737d6]

**[[SAML Assertions]] [#i9eab2bf]

**[[SAML Signature or Encryption]] [#i9eab2bf]

**Name Identifier Format Identifiers [#wf653d3e]
※ [[実装レベル>SAMLを実装する。#e0f28632]]

***Unspecified [#t00efbb9]
-URI: urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
-要素の内容の解釈は個々の実装に任されている。

***Entity Identifier [#fe07533a]
-URI: urn:oasis:names:tc:SAML:2.0:nameid-format:entity
-SAMLプロファイルの参加者の識別子

***Email Address [#m3cde133]
-URI: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
-Eメールアドレス、[RFC 2822]の3.4.1で定義された"addr-spec"の形式。

***Persistent Identifier [#r851b0b5]
-URI: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

-説明~
プライバシー保護の永続的仮名を使用する。

--永続的である必要がある。
---UserIdにHashを適用したり
---UserIdに紐付けたGUIDを返したり

--[[OIDC の Subject Identifier Types = pairwise>OpenID Connect#cf801b20]]に該当。

--NameQualifier属性とSPNameQualifier属性で動作かが変わる。
---通常単一のSPでのみ使用するために確立される。
---明示的に削除されるまでローカルIDと関連付けられたままになる。
---Name Identifier Mapping Protocolにより所属という概念に対するサポートも提供。

***Transient Identifier [#w87077e1]
-URI: urn:oasis:names:tc:SAML:2.0:nameid-format:transient

-説明~
プライバシー保護の一時的仮名を使用する。

--一時的である必要がある。~
GUIDなどを生成して返せばイイ
---IdPで作成された使い捨て識別子に対応するため、SPでの匿名性をサポート。
---SPで特定のローカルIDと関連付けられておらず、セッションが終了すると破棄される。

--ユーザを特定可能な連携すると意味がなくなるので注意。
---様々なクレームをAttributeStatement > Attribute > AttributeValueに指定できる。
---

***その他 [#h53ff737]
-X.509 subject name
-Windows domain qualified name
-Kerberos principal name

**その他 [#a0cda655]

***SAML Versioning [#le72d377]
2.0でほぼFixなので読まなくてよさそう。

***SAML and XML Signature Syntax and Processing [#bb2055db]

***SAML and XML Encryption Syntax and Processing [#oc8fd513]

***SAML Extensibility [#z85090cc]
-SAMLアサーションとプロトコルによる拡張機能
-新しいProfileを定義する方法は、[SAMLProf]を参照

***SAML-Defined Identifiers [#y10d78bb]
-URIベースの識別子
-Subject名識別子の形式
-属性名の形式

*参考 [#m5681faa]
https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf

 1 Introduction
 1.1 Notation
 1.2 Schema Organization and Namespaces
 
 1.3 Common Data Types
 1.3.1 String Values
 1.3.2 URI Values
 1.3.3 Time Values
 1.3.4 ID and ID Reference Values
 
 4 SAML Versioning
 
 4.1 SAML Specification Set Version
 4.1.1 Schema Version
 4.1.2 SAML Assertion Version
 4.1.3 SAML Protocol Version
 4.1.3.1 Request Version
 4.1.3.2 Response Version
 4.1.3.3 Permissible Version Combinations
 
 4.2 SAML Namespace Version
 4.2.1 Schema Evolution
 
 5 SAML and XML Signature Syntax and Processing
 
 5.1 Signing Assertions
 5.2 Request/Response Signing
 5.3 Signature Inheritance
 
 5.4 XML Signature Profile
 5.4.1 Signing Formats and Algorithms
 5.4.2 References
 5.4.3 Canonicalization Method
 5.4.4 Transforms
 5.4.5 KeyInfo
 5.4.6 Example
 
 6 SAML and XML Encryption Syntax and Processing
 6.1 General Considerations
 6.2 Combining Signatures and Encryption
 
 7 SAML Extensibility
 
 7.1 Schema Extension
 7.1.1 Assertion Schema Extension
 7.1.2 Protocol Schema Extension
 
 7.2 Schema Wildcard Extension Points
 7.2.1 Assertion Extension Points
 7.2.2 Protocol Extension Points
 
 7.3 Identifier Extension
 
 8 SAML-Defined Identifiers
 
 8.1 Action Namespace Identifiers
 8.1.1 Read/Write/Execute/Delete/Control
 8.1.2 Read/Write/Execute/Delete/Control with Negation
 8.1.3 Get/Head/Put/Post
 8.1.4 UNIX File Permissions
 
 8.2 Attribute Name Format Identifiers
 8.2.1 Unspecified
 8.2.2 URI Reference
 8.2.3 Basic
 
 8.3 Name Identifier Format Identifiers
 8.3.1 Unspecified
 8.3.2 Email Address
 8.3.3 X.509 Subject Name
 8.3.4 Windows Domain Qualified Name
 8.3.5 Kerberos Principal Name
 8.3.6 Entity Identifier
 8.3.7 Persistent Identifier
 8.3.8 Transient Identifier
 
 8.4 Consent Identifiers
 8.4.1 Unspecified
 8.4.2 Obtained
 8.4.3 Prior
 8.4.4 Implicit
 8.4.5 Explicit
 8.4.6 Unavailable
 8.4.7 Inapplicable
 
 9 References
 
 9.1 Normative References
 9.2 Non-Normative References
 
 Appendix A. Acknowledgments
 Appendix B. Notices

----
Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認証]], [[:SAML]]


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