SAMLとは

SAMLとは、Security Assertion Markup Languageの略であり、SSOを実現する仕組みの1つです。異なるドメインやアプリケーション間での認証や認可情報を安全に交換するためのXMLベースのセキュリティ標準であり、プロトコルの名前です。ユーザーの認証情報や属性情報をセキュアに転送し、信頼関係を確立するための仕組みを提供します。

SAMLは通信にパスワードなどの秘密な情報を含まずトークンでやり取りを行うためセキュリティを向上させることができます。これはサービスを提供する側にもメリットがあるのでSAML認証に対応しているサービスが増加しています。

SAMLの動作原理と認証フロー

SAML認証の流れを紹介します。SAML認証は、ユーザー、IdP、SPの3者間での情報のやり取りで実現します。

  • ユーザー:Webサービスやアプリケーションにログインしたいユーザーを指します
  • アイデンティティプロバイダ(IdP):OneLoginなどのIDやユーザーの認証情報を管理するプロバイダーを指します
  • サービス・プロバイダ(SP):AWSやOffice365などのサービスを提供する側のWebサービスを指します

メタデータの交換と信頼関係の確立

IdPとSPの間でメタデータを交換することで、お互いの存在を知り、相互に信頼関係を確立します。メタデータには、サービスのエンドポイントや公開鍵証明書などの情報が含まれています。これにより、SAMLトークンの安全な交換と信頼性の確保が可能となります。

認証プロセス

認証は以下のフローで行われます。

  1. ユーザーがSPでログインしようとすると、SPはSAML認証要求を生成しSAML認証要求とともにユーザーをIdPに送ります
  2. IdPはこの認証要求に基づいてユーザーの認証処理を実行します
  3. IdPでのユーザー認証が成功すると、SAML認証応答とともにユーザーをSPにリダイレクトします。この時発行された情報をアサーションといいます
  4. SPは受け取ったアサーションを検証し、ユーザーを正当なものとして認証します

上記で説明した認証フローはSP-Initiatedと言われ、はじめにSPにアクセスしようとした場合の認証フローです。一方でIdp-Initiatedという認証フローもあります。これは、はじめにIdPにアクセスしようとした場合の認証フローです。

SAMLの利用シナリオ

シングルサインオン(SSO)の実現

SAMLは、異なるアプリケーションやサービス間でのシングルサインオン(SSO)を実現するために広く使用されています。ユーザーは一度の認証で複数のアプリケーションにアクセスでき、パスワードの維持や入力の手間を削減できます。

複数のアプリケーションやサービスの統合

SAMLを使用することで、異なるアプリケーションやサービスのユーザーアイデンティティを統合することができます。ユーザーの属性情報や権限を一元管理し、統一されたアクセス制御を実現します。

クラウドベースのアクセス管理

SAMLはクラウド環境におけるアクセス管理にも活用されます。クラウドサービスプロバイダはSAMLプロトコルをサポートし、企業のIdPと連携してセキュアなアクセスを提供します。ユーザーは企業の認証基盤を利用してクラウドサービスにアクセスできます。

OneLoginとSAMLの利点

OneLoginと相手アプリケーションの間でSAMLを使用するとき、大きく2つのメリットがございます。1つ目はセキュリティの向上です。認証の仕組み自体が安全かつ確実なユーザー認証を提供します。したがって、SAMLを採用することでセキュリティは向上します。2つ目はユーザビリティの向上です。ユーザーは一度の認証で複数のサービスにアクセスでき、利便性が向上します。

具体的には以下のようなことが実現できます。

  • PKI(公開鍵暗号基盤)を根拠とした認証情報の暗号化・電子署名によるなりすまし防止
  • 同じ認証レベル(例:ID・パスワード+OTP、電子証明書を要求する、など)をユーザーに強制することでポリシーの徹底を実現
  • 従来のログインページを利用せず、ログイン経路をOneLoginにのみ絞る
  • 不正な攻撃者からのブルートフォース攻撃などに対する耐性を強化
  • インストールができないモバイルOS(iPhoneやAndroid)などのブラウザでもOneLoginから相手アプリケーションへのシングルサインオン
  • ユーザーによるパスワード管理をしなくてすむ
  • IAM機能と併用することで内部からの不正アクセスを未然に防ぐ

SAMLに関する用語集

シングルサインオン(Single Sign-On, SSO)

SSOは、ユーザーが複数の関連するアプリケーションやシステムに一度の認証でアクセスできる仕組みです。SAMLはSSOを実現する仕組みの1つです。SAMLでは、ユーザーが一度認証を行えば、SAMLトークンを使用して他のシステムへのアクセスが可能となります。
SSOについて詳しく知りたい方はSSOとは?をご覧ください。

サービスプロバイダ(Service Provider, SP)

SPは、ユーザーがアクセスしようとしているサービスを提供するアプリケーションやシステムです。SAMLでは、SPはユーザーの認証をリクエストし、認証結果を受け取ってアクセスを許可します。

アイデンティティプロバイダ(Identity Provider, IdP)

IdPは、ユーザーの認証を行い、認証結果をSAMLトークンとして提供するサービスやシステムです。OneLoginはIdPの1つです。ユーザーがSPにアクセスする際に、SPからの認証要求に対してSAMLトークンを発行します。

SAMLトークン(SAML Token)

SAMLトークンは、ユーザーの認証情報と属性情報を含むXMLベースのデータです。IdPがユーザーの認証を行った後、このトークンを生成し、SPに渡されます。SPはこのトークンを検証して、ユーザーにアクセスを許可します。

証明書(Certificate)

SAMLでは、トークンの署名や暗号化に使用される証明書が必要です。IdPやSPが相互に信頼するために使用されます。証明書は公開鍵暗号方式で作成され、データが改ざんされていないことを確認します。

アサーション(Assertion)

アサーションは、SAMLトークン内の重要な要素であり、認証情報や属性情報を含んでいます。IdPはアサーションを生成し、SPに送信します。SPはアサーションを検証して、ユーザーのアクセス要求を処理します。

XML

Extensible Markup.px-2 Language(XML)は、データを構造化するための柔軟なマークアップ言語であり、異なるシステム間でデータを交換するために広く使用されます。SAMLでもデータ形式として利用され、認証や属性情報を含むアサーションを表現します。

アサーションコンシューマーサービス(ACS)

SAML認証プロトコルの一部であり、SPがIdPから受け取ったSAMLアサーションを処理し、ユーザーの認証状態を確認します。

シングルログアウト(SLO)

複数のサービスに同時にログインしている場合に、1回の操作で全てのセッションを終了する機能です。SAMLベースのシングルログアウトでは、セッション情報を共有するため、ユーザーは1つのサービスからログアウトすると他のサービスでも同様にログアウトされます。

サインインURL

ユーザーがアクセスして認証を開始するためのURLであり、SAMLベースのシステムではIdPが提供します。ユーザーはこのURLにアクセスすることで、IdPにリダイレクトされ、認証プロセスが開始されます。

サインアウトURL

ユーザーがログアウトするためのURLであり、SAMLベースのシステムではIdPが提供します。ユーザーがこのURLにアクセスすると、SPはIdPにログアウトリクエストを送信し、セッションを終了します。

エンティティID

SAMLシステム内で一意に識別されるエンティティ(SPやIdP)を示す識別子です。エンティティIDはメタデータに含まれ、システム内での相互作用やトラストの確立に使用されます。

ジャストインタイムプロビジョニング(JIT Provisioning)

ユーザーが初めてアクセスする際に、必要に応じて自動的にアカウントを作成するプロセスです。SAMLでは、ユーザーがIdPで認証を行うと、SPがユーザーのアカウントをプロビジョニングし、シームレスなアクセスを実現します。

メタデータ(Metadata)

メタデータは、SAMLシステムの設定情報を含む文書です。IdPとSPはそれぞれメタデータを作成し、交換することで相互のシステムの構成情報を共有します。メタデータにはエンティティの識別情報、公開鍵証明書、エンドポイントのURLなどが含まれます。

バインディング(Binding)

バインディングは、SAMLメッセージをトランスポートするためのプロトコルや方法を指します。例えば、HTTPリダイレクトバインディングやHTTP POSTバインディングなどがあります。

フェデレーション(Federation)

フェデレーションは、異なる組織間で信頼関係を確立し、セキュリティおよびアクセスの一元管理を実現する仕組みです。SAMLを使用したフェデレーションでは、ユーザーが異なる組織のシステムにシームレスにアクセスできます。

属性(Attribute)

属性は、ユーザーに関する情報や属性情報を表すデータです。SAMLトークン内のアサーションには、ユーザーの属性情報が含まれています。例えば、ユーザーの氏名、役割、所属組織などが属性として扱われます。

サービスプロバイダイニシエータ(Service Provider Initiated, SP-Initiated)

SP-Initiatedは、ユーザーが最初にSPのアプリケーションにアクセスしようとする場合の認証フローを指します。ユーザーはSPのアプリケーションからIdPにリダイレクトされ、認証プロセスが開始されます。

アイデンティティプロバイダイニシエータ(Identity Provider Initiated, IdP-Initiated)

IdP-Initiatedは、ユーザーが最初にIdPのシステムにアクセスしようとする場合の認証フローを指します。ユーザーはIdPのポータルから認証プロセスが開始されます。認証成功後にアプリケーションが使用できます。

X.509

X.509はPKI(公開鍵暗号基盤)で使用されるデジタル証明書の規格です。信頼性とセキュリティを確立し、SSL/TLSや電子メールの暗号化などに広く使われます。証明書は認証局(CA)によって発行され、公開鍵やデジタル署名を含みます。階層的な証明書チェーンと失効メカニズムが信頼性を確保します。

無料トライアル申し込み・お問い合わせはこちら

OneLoginでは30日間の無料トライアル期間を設けております。企業ごとに独立したアカウントを発行していますので安心してご利用いただけます。検証課題が解消していない場合にはトライアルの期間を延長することも可能です。