SAMLとは
SAML(Security Assertion Markup Language)は、異なるドメイン(組織やWebサービス)の間で、ユーザーの認証情報(ログイン状態など)を安全に交換するためのXMLベースの規格です。主に企業で導入されている「シングルサインオン(SSO)」を実現するために使われます。SAMLを利用することで、ユーザーは会社のアカウントに一度ログインするだけで、連携している別のクラウドサービス(SlackやSalesforceなど)にも個別のログインなしで安全に自動ログインできるようになります。
具体例
会社の社内システム(IdP:認証サーバー)に朝ログインすると、その後パスワードを入力することなく、業務で使う外部のチャットツール(SP:サービス事業者)や経費精算システムへ直接アクセスして使い始めることができます。SAMLが裏で「このユーザーは認証済みである」という証明書(アサーション)を安全に渡しているためです。
【SAML連携の流れ】\n[ユーザー] --(アクセス)--> [チャットツール (SP)]\n │ (認証要求)\n ▼\n[ユーザー] <--(ログイン画面)-- [社内認証サーバー (IdP)] (ログイン成功)\n │ (SAMLアサーション/証明書を発行)\n ▼\n[ユーザー] --(証明書を送信)--> [チャットツール (SP)] (ログイン完了・利用可能)もう少し詳しく
SAML(特に広く普及しているSAML 2.0)は、アイデンティティプロバイダ(IdP:ユーザー認証を行い、認証結果を保証する側)と、サービスプロバイダ(SP:認証結果を受け取ってサービスを提供する側)の2つの間で、XML形式の「SAMLアサーション(SAML Assertion)」をやり取りすることで機能します。SAMLアサーションには、認証されたユーザーのID、認証日時、認証の有効期限、および属性情報(所属部門やメールアドレスなど)が含まれています。このアサーションは、悪意のある第三者による改ざんやなりすましを防ぐため、IdPの公開鍵暗号技術(デジタル署名)によって保護され、さらに通信内容も必要に応じて暗号化されます。SAMLによるシングルサインオンには、ユーザーがSP(クラウドサービス等)に直接アクセスしたことを契機にIdPへリダイレクトされて認証が始まる「SP起点(SP-initiated)フロー」と、IdPのポータル画面(ダッシュボード)でログインしてからSPへ遷移する「IdP起点(IdP-initiated)フロー」の2通りがあり、いずれのフローでもユーザーの認証情報をIdPだけで安全に一元管理できるため、企業のセキュリティ統制を飛躍的に向上させます。
試験でのポイント
応用情報技術者試験では、エンタープライズセキュリティにおける「シングルサインオン(SSO)」のコア技術としてSAMLが頻出します。「異なるドメイン間で認証情報(ログイン状態)や属性情報を交換するための、XMLベースのプロトコル」という定義や、構成要素である「IdP(Identity Provider)」と「SP(Service Provider)」の役割について正しく説明した選択肢を選ぶ問題が出題されます。また、認証情報を伝えるアサーションの正当性を保証するために、IdP側で署名(秘密鍵によるデジタル署名)を行い、SP側でIdPの公開鍵を用いて署名を検証する、という「公開鍵暗号基盤(PKI)」と組み合わせたセキュリティの仕組みも問われやすいポイントです。さらに、SAMLを用いることでユーザーは複数のパスワードを記憶・入力する必要がなくなり、パスワードの使い回しリスクを低減できるといった導入メリットも整理しておきましょう。
関連する用語
Web上で広く用いられるトークン認証規格のOAuth、およびOAuthをベースにした認証用プロトコルOpenID Connect(OIDC)、そして一度のログインで複数のシステムが利用可能になるシングルサインオン(SSO)があります。これらの目的や利用されるフォーマット(XMLかJSONかなど)の違いを理解しておくことで、試験のあらゆるパターンに対応できます。