Security Assertion Markup Language (SAML) について
Security Assertion Markup Language(SAML、発音:/ˈsæməl/)は、アイデンティティプロバイダ(IdP)とサービスプロバイダ(SP)の間で、
認証および認可に関するデータを安全に交換するためのオープンスタンダードです。SAMLは、XMLベースの
マークアップ言語でセキュリティアサーションを表現し、これを用いてアクセス制御の判断が行われます。
SAMLの主な構成要素は以下の通りです。
XMLベースのプロトコルメッセージ: アサーションの交換を定義します。
プロトコルメッセージのバインディング: メッセージの伝送方法を規定します。
プロファイル: これらの要素を組み合わせた特定のユースケースを定義します。
SAMLは、特にWebブラウザにおけるシングルサインオン(SSO)の実現に重要な役割を果たします。異なるセキュリティドメイン間でのSSOは従来、独自の技術によって実現されてきましたが、SAML WebブラウザSSOプロファイルによって相互運用性が向上しました。
SAMLの歴史と概要
SAMLは、Securant Technologies社のAuthXMLとNetegrity社のS2MLという二つの規格を統合したものです。2005年3月に策定されたSAML v2.0が最新バージョンであり、現在も広く利用されています。
SAMLの標準では、認証、属性、権限の認可といった情報をXMLでアサーションとして表現し、これらの情報を伝送するためのプロトコルが定義されています。これにより、異なるシステム間で安全な情報交換が可能になります。
アサーションについて
アサーションは、SAMLにおける最も基本的な概念で、ユーザーの認証情報、属性、権限認可といったセキュリティ情報をXML形式で記述したものです。異なるエンティティ間でアサーションを交換することにより、SSOやID連携が実現されます。
アサーションは、サブジェクトに対するステートメントとしてセキュリティ情報を記述します。サブジェクトは、アサートされる対象であり、ユーザー、会社、コンピューターなど、セキュリティ領域内のエンティティを指します。
ステートメントには以下の3種類があります。
1. 認証ステートメント: ユーザーを認証したエンティティが作成するステートメントで、認証時刻や認証が行われた場所などの情報を含みます。
2. 属性ステートメント: サブジェクトの属性に関するステートメントで、名前、年齢、性別、会員資格などの情報を含みます。
3. 認可決定ステートメント: サブジェクトに特定の権限を付与したことを示すステートメントで、ファイルへのアクセス権や購入権限などの情報を含みます。
パーティとロール
SAMLのユースケースでは、主に以下のパーティが関わります。
SAMLアサーションパーティ (SAML asserting party): アサーションを発行するパーティで、SAMLオーソリティとも呼ばれます。
SAMLリライングパーティ (SAML relying party): アサーションを受信し、利用するパーティ。
さらに、アサーションの送信を要求するパーティはSAMLリクエスター、それに応じてアサーションを送信するパーティはSAMLレスポンダーと呼ばれます。
SAMLには、様々なロールが存在します。シングルサインオンにおいては、アイデンティティプロバイダ(IdP)とサービスプロバイダ(SP)というロールが重要な役割を果たします。
シングルサインオンでの利用
シングルサインオン(SSO)は、ユーザーが一度認証を受けるだけで、複数のサービスやアプリケーションを利用できる仕組みです。
SAMLを用いたSSOでは、ユーザーが最初に認証を受けるサイトがIdPの役割を担います。IdPは、ユーザーの認証情報やログインセッションなどのセキュリティコンテクストを保持します。
一方、SPは、IdPの認証情報を信頼してサービスやアプリケーションを提供します。IdPとSPは、事前にユーザーIDを対応付けるID連携を行う必要があります。
ユーザーがIdPで認証後、SPのサービスを利用しようとすると、IdPはユーザーのセキュリティコンテクストからアサーションを作成し、SPに送信します。このアサーションには、ユーザーがIdPとSPのユーザーリストに登録されているか、認証が受理されたか、SPが必要とする属性情報などが含まれます。
SAMLには、IdPを起点とするフロー(IdP-initiated flow)と、SPを起点とするフロー(SP-initiated flow)の両方が存在します。一般的には、SPに直接アクセスした場合でも、IdPでの認証が促されるSP-initiated flowがより多く利用されます。
ID連携での利用
SAMLは、ID連携(Identity Federation)においても重要な役割を果たします。
関連技術
連合アイデンティティ (Federated Identity): 複数のシステム間でユーザー
認証を連携させる仕組み。
OpenID: ウェブサイト間の認証を可能にするオープンな標準規格。
XACML: アクセス制御ポリシーを表現するためのXMLベースの言語。
外部リンク
Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0
Security Assertion Markup Language (SAML) V2.0 Technical Overview
*
IT用語辞典e-words SAML 【 Security Assertion Markup Language 】
この情報が、SAMLについて理解を深めるのに役立つことを願っています。