概要

SAML(Security Assertion Markup Language)は、XML ベースの認証・認可情報交換標準です。主にエンタープライズ環境で、複数のサービス間でユーザ認証情報を安全に共有する**フェデレーション SSO(シングルサインオン)**を実現します。

仕組みと動作原理

登場人物

ロール略語説明
サービスプロバイダSPユーザがアクセスするサービス(例: Salesforce)
IDプロバイダIdP認証を行い、アサーションを発行するサーバ(例: Active Directory FS)
プリンシパル認証対象のユーザ

SAML 認証フロー(SP-initiated)

1. ユーザ → SP:サービスにアクセス
2. SP → ユーザ:IdP へリダイレクト(SAMLリクエスト)
3. ユーザ → IdP:認証(ID/パスワード・MFA等)
4. IdP → ユーザ → SP:SAMLレスポンス(アサーション)をPOSTで送信
5. SP → ユーザ:アサーション検証後にセッション確立・アクセス許可

SAMLアサーションの構造

アサーションは3種類の情報を含む XML ドキュメント:

アサーション種別内容
認証アサーションいつ・どのように認証されたか
属性アサーションユーザの属性(名前・メール・ロール等)
認可決定アサーション特定リソースへのアクセス可否

アサーションには IdP のデジタル署名が付与され、SP は IdP の公開鍵で署名を検証します。

バインディング方式

バインディング説明用途
HTTP-RedirectGETパラメータにエンコード(SAMLリクエストに使用)認証リクエスト送信
HTTP-POSTフォームのhiddenフィールドに格納してPOST(SAMLレスポンスに使用)アサーション送信(署名を含むため)
HTTP-Artifactアサーション本体を直接送らず参照IDを渡し、SP-IdP間で直接取得セキュリティ強化が必要な場合

SAML vs OIDC の比較

観点SAMLOIDC
フォーマットXMLJSON(JWT)
主な用途エンタープライズSSOモバイル・Web API
セットアップ複雑(XML署名・メタデータ交換)比較的シンプル
SP開始 / IdP開始両方対応SP開始が基本

SC試験での頻出ポイント

  • SP と IdP の役割の違い:SP はサービス提供者、IdP は認証とアサーション発行を行う
  • アサーションへの署名の検証方法:IdP の公開鍵証明書を SP があらかじめ保有し検証
  • IdP-initiated SSO vs SP-initiated SSO:どちらが開始するかで認証フローが異なる
  • メタデータ交換:SP と IdP が事前に XML メタデータを交換して信頼関係(Trust)を確立
  • アサーションリプレイ攻撃への対策:NotBefore・NotOnOrAfter・InResponseTo による有効期限管理

よくある誤問・ひっかけパターン

誤り① 「SAML は認可フレームワークである」→ 。SAML は認証情報の交換標準です。認可の委譲が目的の OAuth 2.0 と混同しないこと。

誤り② 「SAMLアサーションのHTTP-POSTバインディングはブラウザ経由で送られない」→ 。ブラウザの自動送信フォームを利用してユーザのブラウザ経由でリダイレクトされます。

誤り③ 「SP はユーザのパスワードを検証する」→ 。パスワード検証は IdP が行います。SP はアサーションの署名のみ検証します。

関連用語

重要キーワード

用語説明
SAMLアサーションIdPがSPに送るユーザの認証・属性情報を含むXML文書
SP(サービスプロバイダ)ユーザが利用するサービス。アサーションを受け取り検証
IdP(IDプロバイダ)ユーザを認証しアサーションを発行するサーバ
フェデレーション異なる組織・システム間で認証情報を信頼し合う連携の仕組み
HTTP-POST バインディングアサーションをフォームPOSTでSPに送る方式。署名を含む大きなデータに適する
メタデータSPとIdPが事前に交換するエンドポイント・証明書情報のXML文書