SAML (サムル)
Security Assertion Markup Language
SAMLとは
SAMLとは、Security Assertion Markup Languageの略称で、「サムル」または「サムエル」と読みます。2002年に非営利団体OASISが策定した標準規格です。SAMLは、オンラインサービス間で認証および認可情報を安全に共有するためのXMLベースの標準規格です。SAML 2.0は、SAMLの最新バージョンで、2005年にリリースされました。SAML 2.0には、SAML 1.1と比較して多数の新しい機能や拡張性、セキュリティ機能が追加されており、シングルサインオンやフェデレーション機能を提供するための強力なプロトコルとして認知されています。SAMLは、ユーザーが複数のWebアプリケーションやサービスにシームレスにアクセスすることを可能にするシングルサインオン(SSO)プロトコルとして使用されます。
SAML認証は、Webアプリケーションやサービスにアクセスする際に、ユーザーが一度だけログインして認証トークンを取得し、その後は認証トークンを使用してアクセスすることができる仕組みです。 SAML認証には、以下の3つの主要な役割があります。
- サービスプロバイダー(SP): サービスを提供する側のWebアプリケーションやサービス。SAML認証でログインされるクラウドサービスのことで、AWS、Salesforce、Microsoft 365、Google WorkSpacesなどがSPに該当します。
- アイデンティティプロバイダー(IdP): アイデンティティ(ID)を管理し、必要に応じて一部をSPに提供する事業者やシステム。ユーザーの認証情報を管理するプロバイダーのことで、SPへログインしようとしているユーザーの認証情報を確認し、必要に応じ認証情報の一部をSPへ提供します。Cloudgate UNOなどのID管理機能を搭載したSSOサービスが該当します。
- ユーザー: Webアプリケーションやサービスにアクセスする人。
シングルサインオン(SSO) はSAMLとどのように機能しますか
シングルサインオン(SSO)は、複数のWebアプリケーションやサービスにアクセスするために、ユーザーが1度だけ認証を行い、認証情報を共有することで、簡単かつ安全にアクセスする方法です。SAML(Security Assertion Markup Language)は、SSOを実現するためのプロトコルの1つです。以下は、SAMLを使用したSSOの概要です。
- ユーザーがWebアプリケーションAにアクセスするために、ブラウザでアプリケーションAのURLを開きます。
- アプリケーションAは、ユーザーが認証されていないことを検知し、SAML IdP(Identity Provider)にリダイレクトします。
- ユーザーは、SAML IdPにログインして認証情報を提供します。
- SAML IdPは、認証情報を検証し、SAMLトークンを生成します。
- SAMLトークンには、ユーザーのID情報や属性情報が含まれています。
- SAML IdPは、SAMLトークンをユーザーのブラウザに送信し、ブラウザは再びアプリケーションAにリダイレクトされます。
- アプリケーションAは、ユーザーが提供したSAMLトークンを検証し、ユーザーを認証します。
- 認証が成功すると、アプリケーションAは、ユーザーにアクセスを許可し、アプリケーションAにリダイレクトします。
- ユーザーが他のWebアプリケーションBにアクセスする場合は、同様にSAML IdPに認証を求められますが、認証情報を再度入力する必要はありません。SAMLトークンを使用して、ユーザーはアプリケーションBにアクセスすることができます。
このように、SAMLを使用したSSOでは、ユーザーが1回の認証で複数のアプリケーションにアクセスできるようになります。また、SAMLトークンには、ユーザーの属性情報が含まれているため、アプリケーションは、ユーザーに対して個別のサービスを提供することができます。SAMLを使用することで、ユーザーは複数のアプリケーションに対して、同じ認証情報でアクセスすることができ、管理者は、認証情報を1箇所で管理することができます。
よくある質問 (FAQ)
SAMLはSSOの形式ですか
はい、SAML(Security Assertion Markup Language)は、シングルサインオン(SSO)の形式の1つです。SAMLを使用することで、異なるアプリケーションやサービスの間でユーザーの認証情報を共有し、1回の認証で複数のアプリケーションやサービスにアクセスできるようにすることができます。SAMLを使用したSSOは、認証プロセスの単純化とセキュリティの強化を実現できるため、企業内のアプリケーションやクラウドサービスの認証に広く使用されています。
LDAPとSAMLの違い
LDAPは、ディレクトリサービスを提供するためのプロトコルであり、ユーザーの認証情報やアクセス権限、組織内のリソースなどを格納するために使用されます。一方、SAMLは、異なるアプリケーションやサービスの間で認証情報を共有するための認証プロトコルであり、第三者の認証局として機能し、ウェブシングルサインオン(Web SSO)のために設計されています。つまり、LDAPはディレクトリサービスを提供するためのプロトコルであり、SAMLは異なるアプリケーションやサービスの間で認証情報を共有するための認証プロトコルです。
SAMLとOAuthの違い
SAML (Security Assertion Markup Language) と OAuth (Open Authorization) は、両方ともオンライン認証やアクセス制御のために使用されるプロトコルですが、それぞれ異なる性質を持っています。 OAuthは消費者向けに作成されたプロトコルで、ユーザーがIDの所有権を保持しています。 そのため、認証をする際はユーザー自身がIDの提供を許可する必要があります。
一方、SAMLはエンタープライズ向けプロトコルで、IDの所有権はIdPが保持しており、認証する際はユーザーの許可なく、IdPの判断でIDを提供できます。
- 目的:SAMLは、異なるドメイン間のユーザー認証を容易にするために設計されています。 OAuthは、異なるアプリケーション間のユーザー認証を容易にするために設計されています。
- 認証の種類:SAMLは、主に企業内の従業員などの認証に使用されるSSOをサポートするために、認証局とIDプロバイダーを使用します。 OAuthは、主に外部サービスにアクセスするためのアクセストークンを取得するために使用されます。
- プロトコル:SAMLは、XMLベースのメッセージングプロトコルを使用します。 OAuthは、JSONベースのAPIプロトコルを使用します。
- 認証フロー:SAMLは、ユーザーがログインするための認証フローを使用します。 OAuthは、ユーザーがアプリケーションにアクセスするためのアクセストークンを取得するための認証フローを使用します。
- 認証情報の共有:SAMLは、異なるドメイン間で認証情報を共有するために設計されています。 OAuthは、アプリケーション間で認証情報を共有するために設計されています。
これらの違いにより、SAMLは主に企業内のSSOをサポートするために使用され、OAuthは主に外部サービスとの連携に使用されます。
SSOでのSAMLの仕組み
SAMLを使用したSSOでは、ユーザーは最初に認証サービスにログインします。認証サービスは、SAMLプロトコルを使用してユーザーの認証要求をIdPに送信します。IdPは、ユーザーが認証済みであることを確認し、SAMLレスポンスを作成して認証サービスに返します。認証サービスは、SAMLレスポンスを受け取り、ユーザーが認証済みであることを確認します。これにより、ユーザーは複数のアプリケーションに簡単かつ安全にアクセスできるようになります。SAMLを使用することで、アプリケーション間で認証情報を共有できるため、ユーザーは複数回のログインを行う必要がありません。