「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
汎用認証サイトにSAML2.0を実装するため仕様を読む。
- ターゲットはSP Initiated な Web Browser SSO Profileに絞る。
- ココに書いた情報は、SAML Core の Assertionの範囲。
以下、詳細 †
アサーション内では、一連の内部要素が以下のステートメントを記述する。
- 認証:Subjectは特定の時点で特定の手段によって認証されました。
- 属性:Subjectは提供された属性に関連付けられています。
- 許可決定:指定されたリソースにアクセスする要求が許可または拒否されました。
※ saml-core-2.0-os.pdfの内容が微妙なので、サンプルをベースにそれぞれの仕様を確認する。
(若しくは、医療分野共通認証基盤整備コンソーシアムのDOCの内容がワリとイイ)
SAML 要求・応答メッセージ †
AuthnRequest? †
SPはIdP に認証を要求する<AuthnRequest?>メッセージを発行
Attribute †
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | ID | Required | xs:ID | - | 400ビット以内のID。 応答の InResponseTo? 属性の値は一致させる。 | ○ |
2 | Version | Required | "2.0" | バージョンを指定 | ○ |
3 | IssueInstant? | Required | UTC time | - | 発行時刻を指定 | ○ |
4 | ProtocolBinding? | Optional | URI | - | 応答のProtocol Bindingを識別する参照 URI(AssertionConsumerServiceURLと併用) | ○(Redirect or Post) |
5 | AssertionConsumerServiceURL | Optional | URI | - | 応答のURLを識別する参照 URI(Protocol Bindingと併用) | ○(完全一致) |
6 | AssertionConsumerServiceIndex? | Optional | unsigned Short | - | 応答のURLを識別するインデックス(ProtocolBinding?とAssertionConsumerServiceURLと排他的でメタデータと併用) | - |
7 | AttributeConsumingServiceIndex? | Optional | unsigned Short | - | IdPに要求するユーザ属性グループのインデックス(メタデータと併用) | - |
8 | Destination | Optional | URI | - | IdP のURI | - |
9 | ProviderName? | Optional | string | - | SPの可読名称 | - |
10 | Consent | Optional | URI | urn:oasis:names:tc:SAML:2.0:consent:unspecified | 利用者から得られている同意の有無や条件 | - |
11 | ForceAuthn? | Optional | boolean | false | true の場合、IdP は認証情報を再要求 | - |
12 | IsPassive? | Optional | boolean | false | true の場合、IdP はログインに介入してはならない。 | - |
Elements †
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | saml:Issuer | Optional | URI | - | SP の URI | -(署名があるので) |
2 | ds:Signature | Optional | - | XML署名 | ○ |
3 | Subject | Optional | - | Subjectを入力する(login_hint的な。) | ○ |
4 | NameIDPolicy | Optional | - | Subjectの制約条件を指定(Format、 SPNameQualifier?、AllowCreate?) | ○(Format) |
5 | RequestedAuthnContext? | Optional | - | 認証コンテキストに関する要件を指定 | ○ |
6 | saml:Conditions | Optional | - | アサーション構築プロセスの入力 | - |
7 | Scoping | Optional | - | SPが信頼するIdPリスト | - |
8 | Extensions | Optional | - | 拡張ステートメント | - |
Response †
IdP が認証アサーションを入れた<Response> メッセージを応答する。
Attribute †
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | ID | Required | xs:ID | - | 400ビット以内のID | ○ |
2 | Version | Required | "2.0" | バージョンを指定 | ○ |
3 | IssueInstant? | Required | UTC time | - | 発行時刻を指定 | ○ |
4 | InResponseTo? | Optional | xs:ID | - | 対応する要求メッセージのID。指定の場合、要検証。 | ○(state代替) |
5 | Destination | Optional | URI | - | SPのURI | - |
6 | Consent | Optional | URI | urn:oasis:names:tc: SAML:2.0:consent:unspecified | 利用者から得られている同意の有無や条件 | - |
Elements †
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | Saml:Issuer | Optional | URI | - | IdPのURI | -(署名があるので) |
2 | ds:Signature | Optional | - | XML署名 | ○ |
3 | Status | Optional | URL | - | 処理ステータスコード | ○ |
4 | Assertion | Optional | - | 認証アサーション | ○ |
アサーション †
本要素 †
Attribute †
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | ID | Required | xs:ID | 400 ビット以内のID | ○ |
2 | Version | Required | "2.0" | バージョンを指定 | ○ |
3 | IssueInstant? | Required | UTC time | "2.0" | 発行時刻を指定 | ○ |
Elements †
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | saml:Issuer | Required | URI | - | IdP の URI | ○ |
2 | ds:Signature | Required | - | XML署名 | ○ |
3 | saml:Subject | Optional | - | 拡張スキーマで定義される Subject の方向 | ○ |
4 | saml:Conditions | Optional | - | 有効性を評価する時に考慮すべき条件 | - |
5 | saml:Advice | Optional | - | 付加情報 | - |
6 | saml:Statement | Optional | - | 任意情報 | - |
7 | saml:AuthnStatem? | Optional | - | 認証情報 | - |
8 | saml:AuthzStatem? | Optional | - | 認可情報 | - |
9 | saml:AttributeStat? | Optional | - | 属性情報 | - |
子要素 †
Subject †
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | saml:BaseID | Choice | URI | - | Subjectの識別子を指定 | - |
2 | saml:NameID | ○ |
3 | saml:EncryptedID | - |
4 | saml:SubjectConfirmation? | Optional | - | Subjectの情報(下記参照) | ○ |
NameID †
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | NameQualifier? | Optional | string | - | 識別名を衝突させないよう修飾するセキュリティまたは管理のドメイン | - |
1 | SPNameQualifier? | Optional | string | - | 名称を指定する付加的な手段を提供するSP またはプロバイダ連合の名称 | - |
1 | Format | Optional | URI | urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified | 識別子の分類を表す参照URI | ○ |
1 | SPProvidedID | Optional | string | - | ? | - |
SubjectConfirmation? †
- Attribute
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | Method | Required | URI | urn:oasis:names:tc:SAML:2.0:cm:bearer | bearerをポイント | ○ |
- Elements
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | saml:BaseID | Choice | URI | - | Subjectの識別子を指定 | - |
2 | saml:NameID | ○ |
3 | saml:EncryptedID | - |
4 | saml:SubjectConfirmationData? | Optional | - | Subjectの情報(下記参照) | ○ |
SubjectConfirmationData? †
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | InResponseTo? | Optional | xs:ID | - | Responseメッセージの ID | ○ |
2 | NotBefore? | Optional | UTC time | - | Subjectの利用の開始時刻を指定 | ○ |
3 | NotOnOrAfter? | Optional | UTC time | - | Subjectの利用の終了時刻を指定 | ○ |
4 | Recipient | Optional | URL | - | SPのエンドポイント | - |
5 | Address | Optional | IPアドレス | - | IdPのエンドポイント | - |
Conditions †
AudienceRestriction? †
Saml:AuthnStatement? †
AuthnContext? †
参考 †
https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf
2 SAML Assertions
2.1 Schema Header and Namespace Declarations
2.2 Name Identifiers
2.2.1 Element <BaseID>
2.2.2 Complex Type NameIDType
2.2.3 Element <NameID>
2.2.4 Element <EncryptedID>
2.2.5 Element <Issuer>
2.3 Assertions
2.3.1 Element <AssertionIDRef>
2.3.2 Element <AssertionURIRef>
2.3.3 Element <Assertion>
2.3.4 Element <EncryptedAssertion>
2.4 Subjects
2.4.1 Element <Subject>
2.4.1.1 Element <SubjectConfirmation>
2.4.1.2 Element <SubjectConfirmationData>
2.4.1.3 Complex Type KeyInfoConfirmationDataType
2.4.1.4 Example of a Key-Confirmed <Subject>
2.5 Conditions
2.5.1 Element <Conditions>
2.5.1.1 General Processing Rules
2.5.1.2 Attributes NotBefore and NotOnOrAfter
2.5.1.3 Element <Condition>
2.5.1.4 Elements <AudienceRestriction> and <Audience>
2.5.1.5 Element <OneTimeUse>
2.5.1.6 Element <ProxyRestriction>
2.6 Advice
2.6.1 Element <Advice>
2.7 Statements
2.7.1 Element <Statement>
2.7.2 Element <AuthnStatement>
2.7.2.1 Element <SubjectLocality>
2.7.2.2 Element <AuthnContext>
2.7.3 Element <AttributeStatement>
2.7.3.1 Element <Attribute>
2.7.3.1.1 Element <AttributeValue>
2.7.3.2 Element <EncryptedAttribute>
2.7.4 Element <AuthzDecisionStatement>
2.7.4.1 Simple Type DecisionType
2.7.4.2 Element <Action>
2.7.4.3 Element <Evidence>
Tags: :IT国際標準, :認証基盤, :クレームベース認証, :SAML