SAML 2.0

Security Assertion Markup Language 2.0

Identity ProviderとService Providerの間で認証・属性・認可判断をXML Assertionとして交換する、企業SSOで広く使われる仕様です。

STATUSOASIS Standard · March 2005FLOWS0 documentedPrimary specification ↗

この仕様は、
何を解決するのか。

企業SSO、IdP/SP、SAML Assertionの役割を理解し、OpenID Connectとの違いを整理したい人向けです。

SAML 2.0は、組織やサービスの境界を越えて認証結果とユーザー属性を交換するためのXMLベースの標準です。企業向けSingle Sign-Onで広く利用され、ログインを担当するIdentity Provider(IdP)と、アプリを提供するService Provider(SP)を分離します。

代表的なWeb Browser SSOでは、SPがAuthnRequestをIdPへ送り、ユーザーがIdPで認証します。IdPは署名付きSAML ResponseとAssertionをブラウザ経由でSPのAssertion Consumer Serviceへ返し、SPが検証後にローカルセッションを開始します。

仕様が定める、大切なこと。

01

組織間SSOを実現する

利用者は組織のIdPで一度認証し、連携する複数のSPへ個別パスワードを登録せずアクセスできます。

02

認証結果と属性を伝える

AssertionにSubject、認証時刻、認証Context、所属や役割などのAttributeを含められます。

03

Metadataで信頼を設定する

Entity ID、Endpoint、証明書、対応BindingをMetadataとして交換し、連携相手と検証鍵を事前設定します。

01Identity Provider02Service Provider03SAML Assertion04Web Browser SSO05Metadata / Trust

安全に使うための確認事項。

仕様を実装するときは、正常系の通信だけでなく、値のすり替え、再利用、漏えいが起きた場合も考えます。

  1. 01

    SAML ResponseまたはAssertionの署名を信頼済みIdP証明書で検証し、未署名部分の参照を避けます。

  2. 02

    Issuer、Audience、Recipient、Destination、InResponseTo、有効時間をSP自身の要求と照合します。

  3. 03

    Assertionを一度だけ受理し、短い有効時間とID記録でReplayを防ぎます。

  4. 04

    XML Signature Wrappingを防げる実績あるライブラリを使い、独自XML署名検証を実装しません。

ほかの仕様との関係

SAMLとOpenID ConnectはどちらもFederated LoginとSSOに利用できます。SAMLはXMLとブラウザPOST/Redirect Bindingを中心とし、OIDCはOAuth 2.0、JSON、JWT、RESTとの親和性が高いため、Web・モバイルの新規サービスではOIDCが選ばれることが多いです。

OAuth 2.0 (RFC 6749)The OAuth 2.0 Authorization FrameworkOAuth 2.0 Device Authorization (RFC 8628)OAuth 2.0 Device Authorization GrantOAuth 2.1OAuth 2.1 Authorization FrameworkOpenID Connect Core 1.0OpenID Connect Core 1.0FIDO2 WebAuthn Level 3Web Authentication: Public Key CredentialsFIDO2 CTAP 2.2Client to Authenticator ProtocolFIDO UAF 1.1Universal Authentication FrameworkFIDO U2F 1.2Universal Second FactorOpenID Connect CIBA Core 1.0Client-Initiated Backchannel AuthenticationOAuth 2.0 PKCE (RFC 7636)Proof Key for Code Exchange by OAuth Public ClientsJSON Web Token (RFC 7519)JSON Web Token (JWT)OAuth 2.0 DPoP (RFC 9449)OAuth 2.0 Demonstrating Proof of PossessionSCIM 2.0 (RFC 7644)System for Cross-domain Identity Management: Protocol