SAML認証とは?Oauthとの違いやメリット・デメリット、フローを詳しく解説
セキュリティがますます重要視される現代のIT環境において、認証方式は企業や個人がデジタル情報を守るための要となっています。そんな中で注目されるのが「SAML認証」です。
SAML認証は、SSO(シングルサインオン)を実現するための仕組みのひとつで、複数のクラウドサービスに対するログイン情報を一元化できます。そのため、セキュリティリスクの低減に期待できるでしょう。この利便性の高さから、SAML認証は多くのクラウドサービスに利用されています。
しかし、SAML認証の具体的な仕組みや他の認証システムとの違いまではよくわからないという方も多いのではないでしょうか。
そこで、本記事ではOAuthとの違いやメリット・デメリット、認証フローについて詳しく解説します。
SAML認証とは
SAMLは、Security Assertion Markup Languageの略語で、読み方は「サムル」です。シングルサインオン(SSO)やID連携で利用する認証情報の規格で、XMLと呼ばれるマークアップ言語から成り立っています。一つのサーバーで認証したユーザーの認証情報を、他のサーバーと共有することでSSOを実現しています。
SSOは、ユーザーが一度のログインで複数の異なるサービスにアクセスできる利便性を提供し、企業やサービス提供者にとってはユーザーエクスペリエンスを向上させるとともにセキュリティを強化する手段でもあります。
SAML認証の構成要素
SAML認証を構成する要素を確認していきましょう。SAML認証は「ユーザー」「IdP」「SP」の三者の間で認証を行います。
- ユーザー
サービスを利用する主体。認証を受ける存在です。 - IdP(Identity Provider)
アイデンティティプロバイダーと呼ばれ、ユーザーの認証情報を管理し、サービスプロバイダー(SP)と連携する役割を果たします。IdPはユーザーの認証を行い、その結果をSPに送信してSSOや多要素認証(MFA)を可能にします。 - SP(Service Provider)
サービスプロバイダーは、ユーザーが実際にアクセスするサービスやアプリケーションを指します。Microsoft 365、Google Workspace、Salesforceといったクラウドサービスが具体例として挙げられます。SPはIdPから受け取った認証情報をもとに、ユーザーがアクセスできるようにします。
SAMLとOAuthの違い
SAMLとOAuthは、異なる目的のプロトコルです。SAMLは認証と認可を行いますが、OAuth(オーオース)が行うのは、認可のみです。
- 認証(Authentication)
ユーザーの身元を確認するプロセスです。SAMLは、ユーザーが誰であるかを特定するために使われます。 - 認可(Authorization)
ユーザーが何にアクセスできるかを決定するプロセスです。OAuthは、ユーザーが特定のリソースやサービスにアクセスする権限を与えるために使用されますが、ユーザーが誰であるかを特定する認証は行いません。
OAuthは、認証を行わない特性から、アクセス後のユーザー検証ができません。なりすましによる不正アクセスの検証ができないというセキュリティ面で、SAMLに劣るといえます。
SAML認証のメリット
SAML認証には、どのようなメリットがあるのでしょうか。ここでは、主なメリットに挙げられる3つを、解説していきます。
ユーザーにとって利便性が高い
近年、ユーザーが利用するクラウドサービスは増え続けており、それぞれのログイン情報に関する管理が煩雑になっています。
SAML認証を利用すると、ユーザーは一度ログインするだけで複数のサービスにシームレスにアクセスできるため利便性が飛躍的に向上します。これにより、ログイン時の手間が減り、ユーザーの業務効率が高まるという大きなメリットがあります。
セキュリティの向上につながる
利用するサービスの増加によるログイン情報管理の煩雑化は、パスワードの使いまわしによる情報漏えいや不正アクセスといったリスクの発生原因です。複数のクラウドサービスを利用する場合、各サービスで異なるパスワードを管理することが困難になるため、パスワードの使いまわしが発生しやすくなります。
また、SAML認証では認証情報が一度IdPで保護され、サービスプロバイダーにパスワードそのものを渡さないため、不正アクセスのリスクも低減され全体的なセキュリティの向上に貢献します。
IT部門の負担を軽減できる
パスワードを忘れてしまった従業員の対応や、パスワード再発行などのIT部門による社内サポート業務が軽減できます。
また、従業員の入退社や組織変更といった場合でも、アカウント変更作業の工数を削減できるメリットもあるのです。
SAML認証のデメリット
SAML認証ではメリットだけでなくデメリットもあります。ここでは2つのデメリットについて説明します。
SAML認証に非対応のクラウドサービスもある
SAML認証に対応しているクラウドサービスは増加していますが、すべてのサービスが対応しているわけではありません。特に小規模なサービスや古いシステムでは、SAML認証をサポートしていないことがあります。
そうした場合は従来の認証方法を併用する必要があり、統一的な管理が難しくなることがあります。SAML認証を導入する際には、利用する全てのサービスが対応しているかを確認することが重要です。
不正アクセス時の被害が広がりやすい
SAML認証は、一度認証すれば複数のサービスにアクセスできるという強力な利便性を持つ反面、セキュリティインシデント時には被害が広がりやすいリスクがあります。
もしもIdPやSPの認証情報が不正に取得された場合、攻撃者は一度の侵入で複数のサービスにアクセスできる可能性があるため、被害が大規模化しやすいという問題があります。
また、IdPがダウンするとSAMLを使用する全てのサービスにログインできなくなるため、事業継続性や可用性を確保するための対策を事前に講じる必要があります。
SAML認証のフロー
SAML認証の流れについて解説します。SP起点とIdP起点とで認証の流れが異なるため、それぞれの認証フローを理解しておきましょう。
SP起点(SP Initiated)
- SPにアクセスする
ユーザーが直接、サービスプロバイダー(SP)にアクセスします。 - SPは、SAML認証要求を発行し、IdPへとリダイレクトする
SPはユーザーのリクエストに基づいてSAML認証要求を作成し、ユーザーをIdPにリダイレクトします。 - IdPがユーザーにログイン画面を表示
IdPはログインページを表示し、ユーザーに認証を要求します。 - ユーザーはIdPにログインする
ユーザーはIdPの認証画面でログイン情報を入力して認証を行います。 - IdPはログイン認証をしたうえでSAML認証応答を発行し、SPへリダイレクトする
認証が成功すると、IdPはSAML認証応答(アサーション)を作成し、ユーザーをSPにリダイレクトします。 - SPでログイン完了し、ユーザーの画面にSPの利用画面が表示される
SPはアサーションを受け取り、ユーザーを認証した後、サービスの利用画面を表示します。
IdP起点(IdP Initiated)
- IdPにアクセスする
ユーザーが最初にIdPにアクセスします。 - IdPは、認証画面を表示し、ユーザーにログイン画面を表示する
IdPはログイン画面を表示して、ユーザーに認証情報を入力させます。 - ユーザーはIdPにログインをおこなう
ユーザーはIdPにログインします。 - IdP側でログイン認証がおこなわれる
IdPはユーザーの認証を行います。 - IdP側でログインが成功し、ユーザー側にはSPのサービス選択画面が表示される
認証が成功すると、IdPはSAML認証応答を発行し、ユーザーにはSPのサービス選択画面が表示されます。 - ユーザーは利用したいSPを選択し、IdPはそのタイミングでSAML認証応答を発行してSPへ送信する
ユーザーが利用するSPを選択すると、IdPはそのSPにSAML認証応答を送信します。 - SP側でログインが完了し、ユーザーの画面にSPの利用画面が表示される
SPは認証応答を確認してユーザーを認証し、利用画面を表示します。
SAML認証の設定
SAML認証利用時には、SP側とIdP側それぞれにお互いの情報を登録する必要があります。ここでは、SAML認証の設定に必要な情報をご紹介します。
SP側の設定
SP側にIdPの情報を登録する時に必要な情報は、以下の通りです。
- ログインURL
ユーザーが認証に使用するIdPのログインページのURLです。 - ログアウトURL
シングルログアウトを使用する場合、SP側でこのURLを設定します。シングルログアウトとは、IdPとSPから一度の操作でログアウトできる仕組みです。 - エンティティID
SP自身を識別するための一意の識別子です。 - IdPの証明書(公開鍵)
IdPの認証応答をSPが検証するために必要な証明書です。
IdP側の設定
IdP側にSPの情報を登録する時に必要な情報は、以下の通りです。
- Assertion Consumer Service(ACS)URL
SPがSAMLアサーションを受け取るためのURLです。 - エンティティID
SPを識別するための識別子です。
IdPユーザーとSPユーザーの紐づけ方法
IdPとSPは別のサービスで、それぞれユーザー管理を行っています。そのため、SPを利用するユーザーの紐づけを行わなければなりません。IdPユーザーとSPユーザーの紐づけ方法は、SAML認証における初回ログイン時にIdPとSPの両方でログイン認証をします。
認証フローは、以下の通りです。
- SPにアクセス
ユーザーがSPにアクセスします。 - SAML認証要求を発行し、IdPにリダイレクトする
SPはSAML認証要求を作成し、ユーザーをIdPにリダイレクトします。 - IdPは認証画面を表示し、ユーザーの画面にIdPのログイン画面を表示する
IdPがログイン画面を表示します。 - IdPにログイン
ユーザーはIdPでログインします。 - IdP側でログイン認証を行い、SAML認証応答を発行してSPへリダイレクト
IdPが認証に成功し、SAML認証応答をSPに送信します。 - SP側がユーザーの画面にSPのログイン画面を表示する
初回ログイン時、SPはユーザー情報を入力するための画面を表示することがあります。 - ユーザーは必要に応じてSPにログインする
IdPとSPでユーザーの認証情報を紐づけるために、ユーザーがSP側でログイン操作を行うこともあります。 - SP側でIdPとSPのユーザーの紐づけを行う
SPは受け取ったIdPの認証情報とSP側のユーザーアカウントを紐づけます。 - SP側で認証が完了し、ユーザーの画面にSPの利用画面が表示される
認証が完了し、ユーザーはSPのサービスを利用できるようになります。
まとめ
SAML認証とは、SSOを実現する仕組みのひとつです。SAMLのメリットとして、情報セキュリティの向上やアクセスの一元管理が挙げられます。
便利なSAML認証ですが、非対応のクラウドサービスが存在することや、不正アクセス時の被害が広がりやすいというデメリットも存在します。メリットだけでなく、デメリットも理解したうえで、SAML認証を便利に利用しましょう。