SAML技術解説
ミノルタ株式会社 第2開発センター ソリューション開発部
 上田 隆司
1. SAML概要

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サービスに使われる重要な技術の一つとして注目されています。

1-1 用語解説

・SAML Authority (SAML権限)
Assertionを出すシステム実体で、下記に記載するAttribute Authority(属性権限)、Authentication Authority(証明権限)、PDP(Policy decision point)があります。
・Attribute Authority
Attribute Assertion (属性アサーション)を作るシステム実体
・ Authentication Authority
Authentication Authority(証明権限)を作るシステム実体
・Principal
その同一性が確認できるシステム実体
・Subject
セキュリティドメインにおける認証/承認の対象となる実体。SAML assertionは、Subjectに関する宣言を行ないます。Subjectの代表的な例は、メールアドレスを持っているユーザです。
・Assertion (アサーション)
Subjectを認証した行為、Subjectに関する属性情報、特定のResource(資源)にSubjectがアクセスすることの認可に関してSAML権限が作るデータ
・Resource
(a) 情報システムに含まれているデータ(例えばファイルやメモリにある情報)
(b) システムによって提供されるサービス
(c) システム設備の各アイテム(例えば、ハードウェア、ファームウェア、ソフトウェアあるいはドキュメンテーションのようなシステム・コンポーネント)
(d) システム・オペレーションおよび設備を収容する施設 [RFC2828]
SAMLでは(a), (b)の意味で使用します。またSAMLがResource を参照するときは、URIを用います。
・PDP (Policy decision point)
ポリシーに基づいて、要求者の要求が対象となる資源に関して権限が与えられるかどうかを、判断する機能を持つところ
・PEP (Policy enforcement point)
ポリシーに基づいて、アクセス制御を実施する機能を持つところ。要求者から要求を受け付けて、アクセス制御ポリシーに適合した応答を要求者に返します。

1-2 Use Case (シングルサインオン[Single Sign-On])

Webユーザは、まずSource Web Siteで認証します。その後、Webユーザは他のWebサイト(Destination Web Site)へは直接認証しないでSecureな資源を使用できます。

以下の図は、シングルサインオンの概念図です。

fig1

Step1: WebユーザはSource Web Siteで認証します。
Step2: WebユーザはDestination Web SiteでSecureな資源を使用します。

シングルサインオンには3つのモデル(Pull Model, Push Model, Third-Party Security Service)が考えられています。以下にそれぞれのモデルについて説明します。

1-2-1 Single Sign-on, Pull Model

Destination Web Siteが、Web ユーザによって提供される参照あるいはトークンをベースにしたSource Web Siteから、認証情報を引いてきます(Pull)。

fig2

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ユーザに資源を提供します。

1-2-2 Single Sign-on, Push Model

Source Web SiteはDestination Web Siteに認証情報を出します(Push)。

fig3

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ユーザに資源を提供します。

1-2-3  Single Sign-on, Third-Party Security Service

このUse Caseでは、第三者安全保証機関(Third-Party Security Service)がユーザに認証アサーションを提供します。多数の宛先サイト(destination sites)は、Webユーザを認証するために同じ認証アサーションを使用することができます。

fig4

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は資源を提供します。

2.SAMLアサーション(SAML Assertion)

SAMLアサーションは、1つ以上のStatement(報告)を含む情報パッケージであり、以下の3つの報告が使用できます。

1. Authentication(認証)
特定の時間、特定の手段により指定されたSubjectを認証します。
2. Authorization Decision(認可決定)
Subjectが資源にアクセスする要求を、承認したか否認したかを表します。
3. Attribute(属性)
Subjectに属性を関連付けます。

またSAMLアサーションは以下の特徴を持ちます。

2-1 SAMLアサーション要素のスキーマ

<Assertion>要素のスキーマは下記URIにあります。

http://www.oasis-open.org/committees/security/docs/cs-sstc-schema-assertion-00.xsd

2-2 SAMLアサーションの構成と要素名

SAMLアサーション情報を含む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> 属性報告を指定します。

3.SAMLプロトコル

SAMLプロトコルスキーマ(SAML Protocol Schema)は、下記URIにあります。

http://www.oasis-open.org/committees/security/docs/cs-sstc-schema-protocol-00.xsd

3-1 Protocol Binding and Profile Concepts

アサーションのメッセージ交換は以下の標準プロトコルが使われる予定です。

フレームワークやプロトコルへSAMLアサーションを埋め込んだり抽出したりする方法を、SAMLのプロファイル(Profile)と呼びます。

SAMLのメッセージ交換では、HTTPとSOAPをトランスポート(メッセージの配送方法)として用います。SAMLのメッセージをSOAPで交換する場合には、リクエストとレスポンスの両方において、SOAPメッセージボディに入れなければなりません。SAMLスキーマでは、SAMLのメッセージを再符号化なしでSOAPメッセージ中に埋め込み、配送できるように定義しています。

SAML Protocol(SAMLプロトコル)の要素
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> エラー条件に関する付加情報


参考文献
Assertions and Protocol for the OASIS Security Assertion Markup Language
http://www.oasis-open.org/committees/security/docs/cs-sstc-core-00.doc
Bindings and Profiles for the OASIS Security Assertion Markup Language
http://www.oasis-open.org/committees/security/docs/cs-sstc-bindings-00.doc
Security and Privacy Considerations for the OASIS Security Assertion Markup Language
http://www.oasis-open.org/committees/security/docs/cs-sstc-sec-consider-00.doc
Conformance Program Specification for the OASIS Security Assertion Markup Language
http://www.oasis-open.org/committees/security/docs/cs-sstc-conform-00.doc
Glossary. for the OASIS Security Assertion Markup Language
http://www.oasis-open.org/committees/security/docs/cs-sstc-glossary-00.doc
Oasis Security Services Use Cases And Requirements
http://www.oasis-open.org/committees/security/docs/draft-sstc-saml-reqs-01.doc