SAML (セキュリティアサーションマークアップ言語) とは?

SAMLは、IDプロバイダー (IdP) からサービスプロバイダー (SP) へ、ユーザーの認証・認可情報を安全に伝えるオープンなXMLベースの標準規格です。簡単に言うと、SAMLを使うと、ユーザーは一度サインインするだけで、認証情報を再入力せずに複数のアプリケーションを利用できます。

SAMLは何に使われる?

ユーザーが複数のアプリケーションを安全かつ簡単に利用できるよう、SAMLは幅広く使われています。主な用途は次のとおりです。

  • シングルサインオン (SSO): 1回のログインで複数のアプリケーションにアクセスできるため、サービスごとに認証情報を入力し直す必要がありません。
  • ID連携: SAMLを使うと、パートナー企業や親会社が発行したユーザーIDを信頼できます。そのため、信頼関係のあるドメインのユーザーは、個別のアカウントを作成せずにアクセスできます。
  • 企業向けアクセス管理: ログインを1つのIdP経由に集約すると、ITチームは各アプリケーションにアクセスできるユーザーを一元管理できます。また、多要素認証 (MFA) などのポリシーをすべてのアプリケーションに一括で適用できます。

いずれの場合も、IdPが署名付きXMLアサーションを発行し、ユーザーのブラウザーを介してSPに送ります。こうして認証データを安全に引き渡すため、ユーザーは再度ログインする必要がありません。

SAMLの主な構成要素

SAML認証は、複数の要素が連携して行われます。認証の流れを理解するために、まず主な用語を確認しましょう。

  • プリンシパル (主体): 認証を受けるユーザーのことです。主に、特定のアプリケーションにアクセスしようとしている人を指します。
  • IDプロバイダー (IdP): ユーザーを認証し、ログインに必要なアサーションを発行するシステムです。Microsoft Entra IDやOktaなどがこれにあたります。
  • サービスプロバイダー (SP): ユーザーが利用しようとしているアプリケーションやWebサイトです。ログイン情報を独自に管理せず、IdPにユーザーの認証を委ねます。
  • SAMLアサーション: IdPからSPに送られる署名付きXML文書です。ユーザーの識別情報やアクセス権限が記載されています (詳しくは後述)。
  • メタデータ: IdPとSPが事前に交換する設定情報です。接続先 (エンドポイント) や証明書などが含まれ、互いを信頼して通信するために使われます。
  • 署名証明書: アサーションの署名を検証するためにSPが使う公開鍵を含むデジタル証明書です。SPはこの証明書を使って、IdPから受け取ったアサーションが送信中に改ざんされていないことを確認します。

SAML認証の仕組み

SAML認証では、IdPからSPに署名付きアサーションを送り、ユーザーが本人であることを確認します。最も一般的なのは、SPから始まる認証フローです。ユーザーが利用したいWebサイトやアプリケーションにアクセスすると、認証が始まります。外部のIdPを使ってログインする場合、SPはSAML認証リクエストを添えて、ユーザーのブラウザーをIdPにリダイレクトします。IdPはユーザーの認証情報を確認します。ただし、ユーザーがすでにログイン済みでセッションが有効な場合、この手順は省略されます。認証が完了すると、IdPは署名付きアサーションを生成し、ユーザーのブラウザーを介してSPに送り返します。SPはアサーションの署名を検証して信頼できることを確認し、ユーザーをログインさせます。SP側で別途ログインする必要はありません。SAML認証ではSPから始まるフローが一般的ですが、IdPから始まるフローもあります。この場合、ユーザーはIdPにアクセスし、たとえば会社のダッシュボードにあるアプリケーションのアイコンをクリックして利用を開始します。

SAMLアサーションとは?

SAMLアサーションは、IdPがSPに送る署名付きXML文書で、ユーザーに関する情報を伝えます。アサーションには1つ以上のステートメント (記述) が含まれます。SPはその情報をもとに、ユーザーにアクセスを許可するかどうかを判断します。ステートメントには次の3種類があります。

  • 認証ステートメントは、ユーザーが誰であるか、いつログインしたか、どのようにログインしたか (多要素認証を使ったかどうかなど) を示します。
  • 属性ステートメントは、ユーザーの役職や所属部署などの追加情報を含みます。SPはこれらの属性をもとに、ユーザーが閲覧・操作できる範囲を判断できます。
  • 認可判断ステートメントは、ユーザーに特定のリソースへのアクセスを許可するかどうかを示します。この種類のステートメントはあまり使われません。より複雑なアクセス制御には、通常、拡張アクセス制御マークアップ言語 (XACML) が使われるためです。

SAMLと他の認証規格の比較

SAMLは、ID管理やアクセス制御に関する他のプロトコルとあわせて語られることがよくあります。これらのプロトコルは関連していますが、それぞれ役割が異なります。SAMLの主な役割は認証です。ユーザーが誰であるかを確認し、ウェブサイトやアプリケーションへのログインを許可するかどうかを判断します。一方、OAuthは、アプリケーションに特定のリソースへのアクセス権を与える認可プロトコルです。SAMLとOAuthは競合するものではなく、相互に補完します。SAMLがユーザーを認証し、OAuthがリソースへのアクセスを許可します。

OpenID Connect (OIDC) はSAMLとよく似ています。どちらもユーザーを認証し、シングルサインオン (SSO) を実現します。ただし、OIDCはOAuthを土台にした認証の仕組みで、最新のWebアプリケーションやモバイルアプリケーションに適したJSON Web Token (JWT) を使います。一方、SAMLはXMLベースの仕組みで、企業のWebアプリケーションでのSSOに今も広く使われています。ただし、新しいアプリケーションではOIDCが標準として選ばれることが増えています。これに対し、軽量ディレクトリアクセスプロトコル (LDAP) は、クラウドが普及する前から使われているディレクトリプロトコルで、オンプレミス環境での利用を前提としています。SAMLと競合するものではなく、SAML IdPの背後でユーザー認証情報の参照元として使われることがよくあります。

SAMLOAuthOIDCLDAP
役割認証とシングルサインオン (SSO)認可OAuthでの認証ディレクトリへのアクセス
形式署名付きXMLアサーションアクセストークンJWTディレクトリ情報の検索
最適な用途企業向けウェブアプリのSSOAPIアクセスの委任モバイルアプリ、クラウドネイティブアプリオンプレミスのディレクトリ

SAML

役割認証とシングルサインオン (SSO)
形式署名付きXMLアサーション
最適な用途企業向けウェブアプリのSSO

OAuth

役割認可
形式アクセストークン
最適な用途APIアクセスの委任

OIDC

役割OAuthでの認証
形式JWT
最適な用途モバイルアプリ、クラウドネイティブアプリ

LDAP

役割ディレクトリへのアクセス
形式ディレクトリ情報の検索
最適な用途オンプレミスのディレクトリ

SAMLのメリットとデメリット

SAMLには多くのメリットがありますが、導入前に知っておきたい注意点もあります。

SAMLのメリット

SAMLの大きなメリットは、ユーザーが管理するパスワードの数を減らせることです。1回のログインで複数のアプリケーションにアクセスできるため、覚える認証情報が少なくなります。攻撃対象となる認証情報も減り、盗まれるリスクを抑えられます。認証を1つのIdPに集約すると、組織はポリシーを一元管理できます。セキュリティチームは、接続されたすべてのアプリケーションに多要素認証 (MFA) を一貫して適用できます。また、パスワードリセットの依頼を減らすことで、ヘルプデスクのコスト削減にもつながります。こうした依頼はITサポートに集中しがちです。

SAMLのデメリット

SAMLのメリットを活かすには、適切な設定が必要です。SAMLでは、メッセージの完全性と機密性を守るためにXML署名とXML暗号化を使い、通信経路の保護にはTLSを使います。SAMLでよく見られる脆弱性の1つは、設定ミスです。たとえば、署名が適切に検証されていない場合があります。また、SAMLはXMLベースの仕組みで、最新のトークン形式ほど柔軟ではありません。そのため、モバイルアプリやシングルページアプリケーションへの実装が難しい場合があります。

Cookie を無効にする弊社はお客様のプライバシーを大切にしています

当サイトでは、閲覧体験の最適化、弊社の製品や内容に関する個別広告の表示、ウェブサイトの利用状況の分析のためにクッキーを使用しています。詳しくは、プライバシーポリシーをご覧ください。

無料トライアルにサインアップ

今すぐ購入