SAML(Security Assertion Markup Language) さむる
シングルサインオンフェデレーションIdPSPアサーションXML
SAMLについて教えて
SAMLとは
SAML(Security Assertion Markup Language) とは、異なるシステムやサービス間で認証・認可情報を安全にやり取りするための標準規格です。XML形式で「このユーザーは誰か」「どんな権限を持っているか」という情報(アサーション)を伝達します。
SAMLが解決する問題は「複数のクラウドサービスごとにIDとパスワードを管理する煩雑さ」です。たとえば社員が Salesforce・Slack・Google Workspace を使う場合、SAML対応のID管理システム(例:Azure AD、Okta)に一度ログインするだけで、それぞれのサービスに自動的にログインできます。これがシングルサインオン(SSO) です。
SAMLはOASIS(技術標準化団体)が策定した規格で、特に企業間連携(フェデレーション) に強く、大企業・官公庁・金融機関など、セキュリティ要件が高い組織での導入実績が豊富です。
SAMLの仕組みと登場人物
SAMLには3つの主役がいます。
| 役割 | 正式名称 | 日本語の意味 | 具体例 |
|---|---|---|---|
| IdP | Identity Provider(アイデンティティプロバイダー) | 「身元保証者」。ユーザーを認証してアサーションを発行する | Azure AD / Okta / Google Workspace |
| SP | Service Provider(サービスプロバイダー) | 「サービス提供者」。IdPのアサーションを信頼してサービスを提供する | Salesforce / Slack / kintone |
| ユーザー | Principal(プリンシパル) | サービスを使う人 | 社員・取引先担当者など |
SAMLのログインフロー(SP起点)
①ユーザーがSPにアクセス
↓
②SPが「うちのIdPで認証してきて」とリダイレクト(SAMLリクエスト)
↓
③ユーザーがIdPにログイン(ID・パスワード、MFAなど)
↓
④IdPが「本物ですよ」とSAMLアサーション(XML)を発行
↓
⑤ユーザーのブラウザ経由でアサーションをSPに送信
↓
⑥SPがアサーションを検証してログイン完了 🎉
アサーションの3種類
SAMLが運ぶ情報(アサーション)には3タイプあります。
| アサーション種別 | 内容 | 使われ方 |
|---|---|---|
| 認証アサーション | 「いつ、どこで認証されたか」 | ログイン可否の判断 |
| 属性アサーション | 「名前・メールアドレス・所属部署」など | 権限の割り当て・プロフィール連携 |
| 認可判断アサーション | 「このリソースへのアクセスを許可するか」 | アクセス制御 |
覚え方:「IdPはパスポート発行局、SPは入国審査官」
IdPが「このユーザーは正規の社員です」とサインしたパスポート(アサーション)を発行し、SPはパスポートを確認して通行を許可するだけ。SPはパスワードを直接知らなくていい——これがSAMLのポイントです。
歴史と背景
- 2002年 — OASISがSAML 1.0を策定。企業間のWebサービス連携を目的として誕生
- 2003年 — SAML 1.1へ改訂。Liberty Allianceの仕様と統合
- 2005年 — SAML 2.0 を策定。現在も広く使われる主流バージョン。Shibboleth(大学・研究機関向けSSO)の仕様も取り込み、汎用性が大幅向上
- 2010年代〜 — クラウドサービスの爆発的普及に伴い、エンタープライズSSOの事実上の標準として定着。AzureAD・Okta・OneLoginなどIdP製品が相次いで登場
- 現在 — SaaSが増え続けるほどSAMLの需要も増加。一方でよりシンプルな OAuth 2.0 / OIDC との使い分けも進んでいる
SAMLとOIDC(OpenID Connect)の比較
似た役割を持つOIDCとよく混同されます。どちらを使うか選定の場面で役立つ比較です。
| 比較項目 | SAML 2.0 | OIDC(OpenID Connect) |
|---|---|---|
| データ形式 | XML | JSON / JWT |
| 得意な用途 | 企業間フェデレーション・大企業SSOe | モバイルアプリ・API連携・スタートアップSaaS |
| 歴史・普及 | 2005年〜 老舗・枯れた技術 | 2014年〜 比較的新しい |
| 実装の複雑さ | やや複雑(XMLのパース・署名検証) | シンプル(HTTPSとJWT) |
| 代表的な製品 | Salesforce・SAP・kintone など | Google・Apple・LINE ログインなど |
| モバイル対応 | 苦手(ブラウザリダイレクト前提) | 得意 |
実務での選び方:
- 既存の大企業SaaSや基幹系システムと連携する → SAML
- スマホアプリや新しいAPIベースのシステムを作る → OIDC
- 迷ったら両対応のIdP(Okta・Azure ADなど)を選べば後で対応できます
関連する規格・RFC
| 規格・番号 | 内容 |
|---|---|
| SAML 2.0(OASIS) | 現行の主流バージョン。認証・属性アサーションの仕様全体を定義 |
| WS-Federation | MicrosoftとVeriSignが策定したフェデレーション規格。Active Directoryとの連携で使われる |
| RFC 7522 | OAuth 2.0にSAMLアサーションを組み合わせるための仕様 |
| OpenID Connect(OIDC) | OAuth 2.0拡張の認証レイヤー。SAMLの後継として普及中 |
| SCIM(RFC 7642-7644) | ユーザー情報を自動プロビジョニング(アカウント自動作成)するための規格。SAMLとセットで使われることが多い |
関連用語
- シングルサインオン(SSO) — 一度のログインで複数サービスを使えるようにする仕組み全般
- IdP(Identity Provider) — 認証情報を管理・発行するシステム。OktaやAzure ADが代表例
- OAuth 2.0 — APIへのアクセス認可を委譲するプロトコル
- OpenID Connect(OIDC) — OAuth 2.0に認証機能を追加したプロトコル。SAMLと並ぶSSOの主流
- SCIM — ユーザーアカウントを自動的に作成・削除するためのプロビジョニング規格
- 多要素認証(MFA) — パスワード以外の認証手段を組み合わせてセキュリティを高める仕組み