ゆるテックノート

SAMLの規格と構成

SAMLはOASISという標準化団体が定めた仕様で、現在はSAML 2.0が主流です。ここでは、SAMLを支える規格のパーツをざっくり押さえます。

📜 SAMLの規格とバージョン

SAML 2.0が一般的で、メッセージ構造・送信方法・メタデータの書き方などが細かく決められています。

主なポイント

  • ✅ SAML 2.0と1.1のメッセージは互換ではない。ただし2.0でもemailAddress等の識別URIにSAML:1.1が残るため、URI文字列だけでバージョン違いと判断しない
  • ✅ CoreがAssertionとProtocolを定義し、Bindings、Profiles、Metadataなどが別文書で補う
  • ✅ Binding(送信方法)はHTTP-RedirectやHTTP-POSTなどが代表的
  • ✅ Metadata ではIdP/SPのエンドポイントや証明書情報をXMLで共有する

🧩 規格の内訳をもう少しだけ詳しく

SAML 2.0 の仕様書は複数のパートで構成されています。それぞれが何を決めているのかをざっくり分解します。

バージョン

  • 📌 メッセージのVersion、XML名前空間、適用プロファイルを合わせる。URI中の1.1だけを機械的に2.0へ書き換えない。
  • 📌 IdP/SPともに同じバージョンでそろえる必要がある。

Assertion(アサーション)

  • 📝 「誰が」「いつ」「どう認証されたか」をXMLで表す本体。
  • 📝 条件(NotBefore/NotOnOrAfter)やAudienceが含まれ、SP側でチェックする。

Protocol(プロトコル)

  • 📡 Request/Response の形式やフローを定義。
  • 📡 AuthnRequest、LogoutRequest/Response などの要素や属性を規定。

Binding(送信方法)

  • 🚚 HTTP-Redirect, HTTP-POST, Artifact など、メッセージをどう運ぶかの決まり。
  • 🚚 署名や圧縮(Redirect時のDeflate)の扱いもここで決まる。

Metadata(メタデータ)

  • 📂 IdP/SP のエンドポイントURL、証明書、エンティティIDなどをXMLで交換するフォーマット。
  • 📂 自動インポートに使われ、設定ミスを防ぐ役割がある。

仕様と関連する解説

OASIS SAML core / OASIS SAML profiles
関連するSAML解説