マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

汎用認証サイトにSAML2.0を実装するため仕様を読む。

  • ターゲットはSP Initiated な Web Browser SSO Profileに絞る。
  • ココに書いた情報は、SAML の Coreの範囲。

Introduction

  • Core = Assertion自体、またはAssertionの対象に関して通信するために他のProtocol
  • Assertionの構造と関連するProtocolのセットとシステムの管理に含まれる処理規則を定義する。
  • [XMLNS]
    • AssertionとProtocolメッセージはXML [XML]でエンコード
    • XML名前空間を使用し、他のトランスポート構造に埋め込まれる。
  • [SAMLBind] SAMLバインディング仕様は、
    Protocolメッセージの埋め込みと転送のためのフレームワーク
  • [SAMLProf] SAMLプロファイル仕様は、
    • 特定のユースケースを達成するため、
    • またはSAML機能を使用するときに相互運用性を達成するために、

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

  • SAMLの用語と概念の詳細
    • [SAMLTechOvw?]: SAMLの技術概要
    • [SAMLGloss]: SAML用語集
  • 特定の情報だけを含むファイル
    • [SAML-XSD]: SAMLアサーションスキーマ
    • [SAMLP-XSD]: プロトコルスキーマ
  • [SAMLConform]:
    SAML適合文書は、SAML V2.0を構成するすべての仕様をリスト

Notation

Schema Organization and Namespaces

  • 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

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

String Values

SAML文字列値(xs:string)

  • 少なくとも1つの非空白文字で構成されている必要がある。
  • 比較
    • 厳密なバイナリ比較を使用して比較
    • エンコーディングが異なる場合、
      [UNICODE-C]に変換して比較する。
    • 大文字と小文字を区別する。
  • 以下に依存しない。
    • 空白の正規化またはトリミング
    • 数字や通貨などのロケール固有の形式
  • XMLに指定された正規化規則(XML勧告[XML] Section 2.11に記述されている)
    • 行末は、改行文字(ASCIIコード10Decimal)を使用
    • すべての空白文字は空白に置き換えられる(ASCIIコード32Decimal)
    • XML属性値は、[XML]セクション3.3.3で説明されているように正規化
  • XML要素・属性値の照合順序や並べ替え順序は定義されない。
    故に、実装は値の特定のソート順に依存してはいけない。

URI Values

SAML URI参照値(xs:anyURI)

  • 少なくとも1つの非空白文字で構成されている必要がある。
  • 以下の識別子としてURI参照を広く使用している。
    • ステータスコード
    • フォーマットタイプ
    • 属性
    • システムエンティティ名
    • , etc.

Time Values

SAML時間値(xs:dateTime)

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

ID and ID Reference Values

SAML ID単純型(xs:ID)

  • 要求、および応答のSAML識別子を宣言するために使用
  • 宣言が1つだけ存在すること(重複し無い事)
  • 重複の可能性は極、僅であることを保証する。
  • 2つのランダムに選択された識別子が同一である確率
    • 2-128以下でなければならず(MUST)
    • 2-160以下であるべき(SHOULD)。
  • これは、長さが128-160ビットのランダム値で満たされる。
  • xs:IDの識別子の参照
    • xs:NCNameを使用できる。
    • xs:IDREFは重複するため使用できない。

詳細

SAML Protocols

SAML Assertions

SAML Signature or Encryption

Name Identifier Format Identifiers

実装レベル

Unspecified

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

Entity Identifier

  • URI: urn:oasis:names:tc:SAML:2.0:nameid-format:entity
  • SAMLプロファイルの参加者の識別子

Email Address

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

Persistent Identifier

  • URI: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
  • 説明
    プライバシー保護の永続的仮名を使用する。
  • 永続的である必要がある。
    • UserId?にHashを適用したり
    • UserId?に紐付けたGUIDを返したり
  • NameQualifier?属性とSPNameQualifier?属性で動作かが変わる。
    • 通常単一のSPでのみ使用するために確立される。
    • 明示的に削除されるまでローカルIDと関連付けられたままになる。
    • Name Identifier Mapping Protocolにより所属という概念に対するサポートも提供。

Transient Identifier

  • URI: urn:oasis:names:tc:SAML:2.0:nameid-format:transient
  • 説明
    プライバシー保護の一時的仮名を使用する。
  • 一時的である必要がある。
    GUIDなどを生成して返せばイイ
    • IdPで作成された使い捨て識別子に対応するため、SPでの匿名性をサポート。
    • SPで特定のローカルIDと関連付けられておらず、セッションが終了すると破棄される。
  • ユーザを特定可能な連携すると意味がなくなるので注意。
    • 様々なクレームをAttributeStatement? > Attribute > AttributeValue?に指定できる。

その他

  • X.509 subject name
  • Windows domain qualified name
  • Kerberos principal name

その他

SAML Versioning

2.0でほぼFixなので読まなくてよさそう。

SAML Extensibility

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

SAML-Defined Identifiers

  • URIベースの識別子
  • Subject名識別子の形式
  • 属性名の形式

参考

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

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
Last-modified: 2019-12-04 (水) 13:59:58 (4d)