XML文書を複数のサーバへ転送する場合、最初の1回のログイン認証だけで複数のサーバ資源が使用できることが望まれます(シングルサインオン)。SAML(Security Assertion Markup Language)は、このシングルサインオンの機能を実現するためにOASIS(Organization for the Advancement of Structured Information Standards)で作られました。
XML文書を複数のサーバへ転送する場合、最初の1回のログイン認証だけで複数のサーバ資源が使用できることが望まれます(シングルサインオン)。SAML(Security Assertion Markup Language)は、このシングルサインオンの機能を実現するためにOASIS(Organization for the Advancement of Structured Information Standards)で作られました。
2002年4月19日 | SAML 1.0 Specification Set(*1)としてCommittee Specificationとなる |
2002年7月以降 | OASIS標準となる予定 |
(*1)SAML 1.0 Specification Set 2002年4月19日リリースのSAML 1.0 Specification Setは、以下の5つの仕様から成ります。 (1) Assertions and Protocol (2) Bindings and Profiles (3) Security and Privacy Considerations (4) Conformance Program Specification (5) Glossary. |
SAMLは、「AuthXML(AuthenticationXML)」と「S2ML(Security Services Markup Language)」という2つのセキュリティ標準を基にできています。
SAMLは、メッセージのトランスポートとして、HTTPとSOAPの両方が利用できます。SAMLをHTTPやSOAPメッセージに付加することで、一つの信用情報を持ち回りでき、シングルサインオンを実現しています。今後のWebサービスに使われる重要な技術の一つとして注目されています。
Webユーザは、まずSource Web Siteで認証します。その後、Webユーザは他のWebサイト(Destination Web Site)へは直接認証しないでSecureな資源を使用できます。
以下の図は、シングルサインオンの概念図です。
Step1: | WebユーザはSource Web Siteで認証します。 |
Step2: | WebユーザはDestination Web SiteでSecureな資源を使用します。 |
シングルサインオンには3つのモデル(Pull Model, Push Model, Third-Party Security Service)が考えられています。以下にそれぞれのモデルについて説明します。
Destination Web Siteが、Web ユーザによって提供される参照あるいはトークンをベースにしたSource Web Siteから、認証情報を引いてきます(Pull)。
Step1: | WebユーザはSource Web Siteで認証します。 |
Step2: | WebユーザはDestination Web Siteへのリンクを要求します。 |
Step3: | Source Web Siteは認証の参照先(assertion reference)をユーザへ提供し、Destination Web Siteにユーザを転送します。 |
Step4: | Webユーザは認証の参照先を提供して、Destination Web Siteの資源を要求します。 |
Step5: | Destination Web Siteは、認証の参照先を通じてSource Web Siteからアサーションと言われる認証ドキュメントを要求します。 |
Step6: | Source Web Siteは認証ドキュメントを戻します。このドキュメントには、Webユーザに関するイベント記述および属性が含まれます。 |
Step7: | Destination Web SiteはWebユーザに資源を提供します。 |
Source Web SiteはDestination Web Siteに認証情報を出します(Push)。
Step1: | WebユーザはSource Web Siteで認証します。 |
Step2: | WebユーザはDestination Web Siteへのリンクを要求します。 |
Step3: | Source Web Siteは、Destination Web Siteへ宛先の資源を使用する要求を送信する。 |
Step4: | Destination Web Siteは、資源へのアクセス許可の決定を記録しているSource Web Siteに決定の参照先を戻します。 |
Step5: | 決定の参照先を提供して、ユーザを直接Destination Web Siteに向かわせます。 |
Step6: | 決定の参照先を提供しているDestination Web Siteから宛先の資源を要求します。 |
Step7: | Destination Web SiteはWebユーザに資源を提供します。 |
このUse Caseでは、第三者安全保証機関(Third-Party Security Service)がユーザに認証アサーションを提供します。多数の宛先サイト(destination sites)は、Webユーザを認証するために同じ認証アサーションを使用することができます。
Step1: | Webユーザはセキュリティサービス(Security service)で認証します。 |
Step2: | セキュリティサービスはWebユーザにSAML認証の参照先を返します。 |
Step3: | Webユーザは認証参照先を提供しているFirst Destination Web Siteから資源を要求します。 |
Step4: | First Destination Web SiteはWebユーザの認証参照先を通してセキュリティサービスから認証ドキュメントをリクエストします。 |
Step5: | セキュリティサービスは認証属性やイベント記述を含むFirst Destination Web Siteに認証ドキュメントを提供します。 |
Step6: | First Destination Web SiteはWebユーザに資源を提供します。 |
Step7: | WebユーザはFirst Destination Web SiteからScond Destination Web siteにリンクを要求します。 |
Step8: | First Destination Web Siteは第三者セキュリティサービスへ認証ドキュメントを提供しているScond Destination Web siteからアクセス権限を要求します。 |
Step9: | Scond Destination Web siteは決定の参照先に返すアクセス権限を提供します。 |
Step10: | First Destination Web Siteは、Webユーザに決定の参照先を提供します。 |
Step11: | Scond Destination Web siteは資源を提供します。 |
SAMLアサーションは、1つ以上のStatement(報告)を含む情報パッケージであり、以下の3つの報告が使用できます。
またSAMLアサーションは以下の特徴を持ちます。
<Assertion>要素のスキーマは下記URIにあります。
SAMLアサーション情報を含むSAML構成を以下の表で定義します。
Assertion(アサーション) | |||
<AssertionIDReference> | SAMLアサーションの参照先です。 | ||
<Assertion> | 以下の、要素や属性を含む基本的な情報です。 | ||
MajorVersion | アサーションのメジャーバージョンである”1”を定義します。 | ||
MinorVersion | アサーションのマイナーバージョンである”0”を定義します。 | ||
AssertionID | ユニークなアサーション識別子を指定します | ||
Issuer | アサーションの発行者をURI形式で指定します | ||
IssueInstant | アサーションの発行時間を指定します | ||
<Conditions> [Optional] | アサーションの有効性を評価する時に考慮すべき条件を指定します。 | ||
<Advice> [Optional] | アサーションの付加情報を指定します。 | ||
<Signature> [Optional] | アサーションを認証するためのXML署名(XML Signature) | ||
Statement(報告) | |||
<Statement> | 拡張スキーマで定義される報告を指定します。 | ||
<SubjectStatement> | 拡張スキーマで定義されるSubjectの方向を指定します。 | ||
<AuthenticationStatement> | 認証の報告を指定します。 | ||
< AuthorizationDecisionStatement > | 認証決定の報告を指定します。 | ||
Resource | 資源のアクセス権限を識別するURI参照先 | ||
Decision | 発行人が資源に関して与える決定 | ||
<Action> | 資源で実行することが許可されたActionセット | ||
<Evidence> | 発行人が決定する際に参照するアサーションセット | ||
<AttributeStatement> | 属性報告を指定します。 |
SAMLプロトコルスキーマ(SAML Protocol Schema)は、下記URIにあります。
アサーションのメッセージ交換は以下の標準プロトコルが使われる予定です。
フレームワークやプロトコルへSAMLアサーションを埋め込んだり抽出したりする方法を、SAMLのプロファイル(Profile)と呼びます。
SAMLのメッセージ交換では、HTTPとSOAPをトランスポート(メッセージの配送方法)として用います。SAMLのメッセージをSOAPで交換する場合には、リクエストとレスポンスの両方において、SOAPメッセージボディに入れなければなりません。SAMLスキーマでは、SAMLのメッセージを再符号化なしでSOAPメッセージ中に埋め込み、配送できるように定義しています。
Request(要求) | |||
<Request> | 特定のアサーションの問い合わせや要求をします。 | ||
<Query> | 新しいQueryで拡張スキーマを定義します。 | ||
<SubjectQuery> | SAML Subjectを指定する新しいSAMLクエリを認める拡張ポイントです。 | ||
<AuthenticationQuery> | 承認情報の問い合わせをします。 | ||
<AttributeQuery> | 属性情報の問い合わせをします。 | ||
<AuthorizationDecisionQuery> | 権限決定の問い合わせをします。 | ||
<AssertionIDReference> | アサーション識別子を参照するアサーションを要求します。 | ||
<AssertionArtifact> | アサーションの加工を指定します | ||
Queries(問い合わせ) | |||
<Query> | 新しいSAMLクエリ(Query)を定義できる拡張ポイントです。 | ||
<SubjectQuery> | SAML Subjectを指定する新しいSAMLクエリを認める拡張ポイントです。 | ||
<AuthenticationQuery> | 承認情報の問い合わせをします。 | ||
<AttributeQuery> | 属性情報の問い合わせをします。 | ||
<AuthorizationDecisionQuery> | 権限決定の問い合わせをします。 | ||
Responses(応答) | |||
<Response> | 対応するSAMLリクエストのステータスと、Request(要求)に答えるアサーションのリストを指定します。 | ||
<Status> | ステータスを表します。 | ||
<StatusCode> | 対応するリクエストのステータスを表すコード(Code) | ||
<StatusMessage> | オペレータに返すメッセージ | ||
<StatusDetail> | エラー条件に関する付加情報 |