本文へスキップ
ecdsa.com

SAML 2.0

ID プロバイダーとサービスプロバイダーの間で、署名付きの認証アサーションと属性アサーションをやり取りするための OASIS の XML 標準(2005年3月)で、現在も企業のシングルサインオンの基盤です。
別表記SAMLSecurity Assertion Markup LanguageSAML assertionSAML SSO

ID プロバイダーは Assertion(サブジェクト、NotBefore、NotOnOrAfter、AudienceRestriction などの条件、認証ステートメント、属性)を発行して XML 署名で署名し、通常は HTTP-POST バインディングを使って、ブラウザー経由で Response に入れて届けます。サービスプロバイダーは、メタデータから取得した IdP の証明書で署名を検証し、さらにオーディエンス、有効な時間枠、InResponseTo の値、宛先 URL を確認します。

SAML の深刻なバグの多くは XML 処理のバグです。署名ラッピング(検証者は署名された要素を確認する一方で、アプリケーションは署名されていない別の要素を読み取る)、名前識別子内のコメントによる切り詰め(2018年、複数のライブラリ)、XML 外部エンティティの展開、レスポンスの一部しか対象としない署名などがあります。メンテナンスされているライブラリを使い、汎用の XPath コードで署名を検証してはいけません。

新しいアプリケーションでは通常 OpenID Connect のほうがシンプルですが、企業の顧客は SAML を求めることが多く、多くの製品が両方を運用しています。SAML インスペクターは、アサーションをローカルでデコードして確認します。

規格と参考文献

すべての用語