「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
汎用認証サイトにSAML2.0を実装するため仕様を読む。
アサーション内では、一連の内部要素が以下のステートメントを記述する。
※ saml-core-2.0-os.pdfの内容が微妙なので、サンプルをベースにそれぞれの仕様を確認する。
(若しくは、医療分野共通認証基盤整備コンソーシアムのDOCの内容がワリとイイ)
SPはIdP に認証を要求する<AuthnRequest?>メッセージを発行
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
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 はログインに介入してはならない。 | - |
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
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 | - | 拡張ステートメント | - |
IdP が認証アサーションを入れた<Response> メッセージを応答する。
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
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 | 利用者から得られている同意の有無や条件 | - |
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | Saml:Issuer | Optional | URI | - | IdPのURI | -(署名があるので) |
2 | ds:Signature | Optional | - | XML署名 | ○ | |
3 | Status | Optional | URL | - | 処理ステータスコード | ○ |
4 | Assertion | Optional | - | 認証アサーション | ○ |
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | ID | Required | xs:ID | 400 ビット以内のID | ○ | |
2 | Version | Required | "2.0" | バージョンを指定 | ○ | |
3 | IssueInstant? | Required | UTC time | "2.0" | 発行時刻を指定 | ○ |
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
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 | - | 属性情報 | - |
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | Method | Required | URI | urn:oasis:names:tc:SAML:2.0:cm:bearer | bearerをポイント | ○ |
※ Any Number:型が違う時に要否が変わる場合は、この表現。
# | パラメタ | 要否 | 値 | 既定値 | 内容 | 汎用認証サイト |
1 | Value | Required | URI | - | ステータスコードのを参照 URI 値 | ○ |
2 | StatusCode? | Optional | URI | - | より具体的なエラー情報を提供する状態コードを指定 | - |
# | ステータス | 値 | 説明 |
1 | 成功 | urn:oasis:names:tc:SAML:2.0:status:Success | |
2 | 失敗 | urn:oasis:names:tc:SAML:2.0:status:Requester | リクエスタでの失敗 |
3 | urn:oasis:names:tc:SAML:2.0:status:Responder | レスポンダでの失敗 | |
4 | バージョン不整合 | urn:oasis:names:tc:SAML:2.0:status:VersionMismatch? | 要求メッセージのバージョンは処理できない。 |
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