SAMLとは、Security Assertion Markup Languageを意味する略語です。オンラインセキュリティでの主な役割は、1つの資格情報セットを使用して、複数のWebアプリケーションにアクセスできるようにすることです。これは、通常IDプロバイダ(idP)とWebアプリケーションの2者間で、特別なフォーマットにより認証情報を受け渡すことで機能します。
SAMLは、認証に使用されるオープンスタンダードです。SAMLはExtensible Markup Language(XML)フォーマットを基盤としています。WebアプリケーションはSAMLを使用して、IDプロバイダ(IdP)とサービスプロバイダ(SP)の2者間で認証データを転送します。
テクノロジー業界では、ユーザがドメインをまたいで、複数の独立したWebアプリケーションにアクセスするために必要な認証プロセスをシンプル化するためにSAMLを作成しました。SAMLの登場以前はシングルサインオン(SSO)が利用可能でしたが、これは同一ドメイン内でのみ有効なCookieに依存するものでした。SAMLでは、IDプロバイダでユーザ認証を一元化することでこの目的を実現しています。次にWebアプリケーションは、IDプロバイダ経由でSAMLを利用して、ユーザにアクセス権を付与します。このSAML認証の手法では、ユーザが複数のユーザ名やパスワードを覚えておく必要がありません。またサービスプロバイダにとっては、(脆弱で安全性に欠けることが多い)パスワードを保存することを回避でき、パスワード紛失の問題に対応する必要もないため、自社のプラットフォームのセキュリティを向上できるというメリットがあります。
数多くのメリットがあるSAMLは、エンタープライズソリューションで広く採用されています。まずSAMLは、一度のサインインのみで複数のWebアプリケーションにアクセスできるため、ユーザエクスペリエンスが向上します。認証プロセスが高速化されるだけではなく、覚える資格情報セットが1つのみで済むということです。この機能により、ヘルプデスクがパスワードリセットに対応するケースが減少するため、組織にとってもメリットがあります。
SAMLは、ユーザエクスペリエンスの改善に加えて、セキュリティも向上できます。IDプロバイダがすべてのログイン情報を保存しているため、サービスプロバイダはシステム上にユーザの資格情報を保存する必要がありません。さらに、IDプロバイダは安全なSAML認証の提供に専念するため、複数のセキュリティレイヤーを実装する時間とリソースに投資することができます。例えばidPは、一般的なパスワード攻撃から保護する多要素認証(MFA)などの組み込み機能を含む、包括的なIDセキュリティソリューションを備えています。
SAMLは、IDプロバイダとサービスプロバイダの間で、ログイン、認証状態、識別要素、およびその他の関連する属性などのユーザ情報をやり取りすることで機能します。その結果、ユーザは1つの認証資格情報で一度ログインするだけで済むため、認証プロセスがシンプル化され、セキュリティが確保されます。ユーザがサイトにアクセスする際は、IDプロバイダがSAMLの認証情報をサービスプロバイダに渡し、サービスプロバイダがユーザのアクセスを許可します。この概念を、実世界にたとえて説明します。
通常、組織では、アクセス権を付与する前にIDを確認する必要があります。航空業界がよい例です。飛行機に搭乗する前に、航空会社は、その他の乗客の安全を確保するために乗客が本人であることを確認する必要があります。そこで、政府発行の写真付き身分証明書によって身元を確認します。身分証明書の名前と航空券の名前が一致することが確認できたら、飛行機への搭乗が許可されます。
以下の例では、政府がIDプロバイダ、航空会社がサービスプロバイダに相当します。政府発行の身分証明書がSAMLアサーションです。政府発行IDを申請する際、通常は書類への記入と写真撮影が必要となります。場合によっては指紋採取も必要です。政府(IDプロバイダ)���、この身元証明の属性をデータベースに保存し、IDと関連付けられた物理的な身分証明書を発効します。航空会社の例では、搭乗ゲートに到着すると、航空会社(サービスプロバイダ)が身分証明書(SAMLアサーション)を確認します。航空会社は、身分証明書に記載された詳細を受け取り、IDカードやパスポートが有効なドキュメントとして精査されます。認証に成功すると、航空会社は飛行機への搭乗を許可します。
SAMLシングルサインオンは、IDプロバイダにログインした後に複数のWebアプリケーションへのログインを許可する、SAMLを活用したメカニズムです。SAML SSOでは、ユーザは一度ログインするだけで済むため、高速でシームレスなユーザエクスペリエンスが提供されます。
SAML SSOは、ユーザの資格情報セットを1つ覚えるだけでよいため、ユーザの視点から見ると使いやすくより安全です。また、アプリケーションにアクセスするごとにユーザ名やパスワードの入力を要求されることがないため、サイトへの高速かつシームレスなアクセスも提供します。その代わりに、ユーザはIDプロバイダにログインし、その後アイコンをクリックするか、URLでサイトに移動することで、対象のWebアプリケーションにアクセスします。
SAML SSOには、ユーザエクスペリエンスの向上に加えて、その他のメリットもあります。ユーザとヘルプデスクの両方の生産性を向上させます。ユーザは、複数のWebアプリケーションにログインするためにそれぞれ専用の資格情報セットを使い、時間を浪費することがなくなります。その結果、ヘルプデスクにパスワードリセットのリクエストを大量に送ることもなくなり、サービスチームはその他のサービス関連の問題に対応することができます。
SAML SSOは、ユーザの満足度と生産性を向上させることに加えて、コスト削減にも役立ちます。例えば、ヘルプデスクが対応する案件が減少します。ソリューションのためのローカル認証の実装を構築する代わりに、IDプロバイダに登録することで、内部で機能の構築およびメンテナンスを行う労働コストを削減できます。
OAuthとSAMLは、いずれもアクセスを許可するプロトコルです。ただし、この2つの大きな違いは、SAMLは認証に、OAuthは承認に使用するということです。
再度航空会社の例で考えてみると、乗客の身分証明書がSAMLアサーション、チケットがOAuthトークンに相当します。航空会社では、飛行機への搭乗を許可する前に、身分証明書を乗客のID確認に使用します。しかしながら、乗客が飛行機に搭乗した後は、客室乗務員はチケットを使用して、乗客のステータスや権利を確認します。例えば、ファーストクラスのチケットを持った乗客は、エコノミークラスの乗客が利用できない座席やサービスにアクセスできます。
SAMLは、要求ベースの認証ワークフローを使用します。まず、ユーザがサイトにアクセスを試みると、サービスプロバイダはIDプロバイダにユーザの認証を要求します。その後、サービスプロバイダは、IDプロバイダが発行したSAMLアサーションを使用して、ユーザにアクセス権を付与します。例を挙げてこのワークフローを説明します。
OneLoginでは、開発者がSAML認証を提供するIDプロバイダ経由でアプリのSSOを有効化するのに使用できるいくつかのSAML Toolkitを提供しています。また、OneLoginカタログにアプリを追加する方法や、OneLogin経由でアプリがユーザにSSOを提供するためのコード作成の方法、役立つベストプラクティス、およびよくある質問に関するリソースも提供しています。
OneLogin SAML Toolkitは、オンラインツールも提供しています( https://www.samltool.com)。例えば、テスト環境で使用できる、X.509自己署名証明書を入手できます。また、SAMLはBase64エンコーディングアルゴリズムを使用しているため、OneLogin Toolkitリソースでは、XMLからBase64の、またはその逆のエンコードとデコードが可能なオンラインサービスも提供しています。Toolkitは、XMLからの暗号化ノード、AuthNRequestの署名、およびSAML XSDスキーマに対するXMLの検証のリソースも提供しています。
証明書のサポートとXMLエンコーディング、デコーディング、署名、および検証サービスに加え、OneLogin SAMLオンラインツールでは、その他の有用な開発リソースを提供しています。例えば、SAML IDプロバイダのXMLメタデータを構築できます。また、SAML応答のアサーションから、NameIDやその他の関連する属性を抽出するツールを提供しています。OneLogin SAMLオンラインツールは、XMLまたはSAMLのメッセージを人間が判読可能な形式に変換するサービスも提供します。