SAML(Security Assertion Markup Language)とは、セキュアなウェブドメイン間でユーザーの認証と認可のデータを交換するための XML ベースの標準規格のことです。SAML を使用することで、オンラインのサービス プロバイダは別のオンライン ID プロバイダと通信し、セキュアなコンテンツにアクセスしようとしているユーザーを認証することができます。
Google では、パートナー企業がシングル サインオン(SSO)サービスを使って、ウェブベースのアプリケーション(Gmail や Google カレンダーなど)にアクセスできるホスト型ユーザー アカウントの認可と認証を完全に管理できるようにしています。SAML モデルを使用することで、Google はサービス プロバイダとして機能し、Gmail やスタートページなどのサービスを提供します。Google パートナーは ID プロバイダとして機能し、Google が提供するウェブ アプリケーションのユーザー認証に使用されるユーザー名やパスワードおよびその他の情報を管理します。Google サービスとの SSO の実装に役立つオープンソースおよび商用 ID プロバイダ ソリューションは、多数用意されています。
重要なのは、SSO がウェブ アプリケーションにのみ適用されるという点です。たとえば、デスクトップ クライアントからの Google サービスへのアクセス(Outlook から Gmail への POP アクセスなど)をユーザーに許可したい場合は、利用可能なパスワードをユーザーに提供し、それらのパスワードを Admin SDK の Directory API を使って内部ユーザー データベースと同期する必要があります。なお、管理コントロール パネルのログイン URL を使用したユーザー認証の仕組みを理解していると、パスワード同期の際に役立ちます。
Google の SSO サービスは SAML バージョン 2.0 の仕様に基づいています。SAML バージョン 2.0 は複数の有名なベンダーによってサポートされています。
パートナーが運営する SAML ベースの SSO について
ここでは、パートナーが運営する SAML ベースの SSO サービスを介して Google アプリケーションにログインする仕組みを説明します。
下記の図 1 は、ユーザーが SAML ベースの SSO サービスを介して Gmail などの Google アプリケーションにログインする過程を表しています。図に続くリストでは、各ステップをより詳細に説明しています。
注: このプロセスが開始される前に、パートナーは Google に SSO サービスの URL とともに Google が SAML レスポンスを確認するのに使う公開鍵を提供しなければなりません。
図 1: パートナーが運営する SAML ベースの SSO サービスを使用して Google にログインする
この図では以下のステップが解説されています。
- ユーザーが Google アプリケーション(Gmail やスタートページ、その他の Google サービスなど)へのアクセスを試みます。
- Google が SAML 認証リクエストを生成します。SAML リクエストはエンコードされ、パートナーの SSO サービスの URL に埋め込まれます。SSO URL には RelayState パラメータも埋め込まれます。このパラメータには、ユーザーがアクセスしようとしている Google アプリケーションのエンコードされた URL が含まれます。この RelayState パラメータは不透明な識別子であり、値の変更や検査を受けることなく送り返されることが意図されています。
- Google がユーザーのブラウザにリダイレクトを送信します。リダイレクト URL にはエンコードされた SAML 認証リクエストが含まれ、これはパートナーの SSO サービスに送信されます。
- パートナーは SAML リクエストをデコードし、Google の ACS(Assertion Consumer Service)とユーザーの宛先 URL(RelayState パラメータ)のために URL を抽出してから、ユーザーを認証します。パートナーは、有効なログイン認証情報を要求するか、有効なセッション クッキーを確認してユーザーを認証します。
- パートナーは、認証されたユーザーのユーザー名が含まれる SAML レスポンスを生成します。このレスポンスは、SAML 2.0 の仕様に従ってパートナーの DSA または RSA の公開鍵と秘密鍵でデジタル署名されます。
- パートナーは SAML レスポンスと RelayState パラメータをエンコードして、その情報をユーザーのブラウザに返します。パートナーが提供するメカニズムによって、ブラウザはその情報を Google の ACS に転送できます。たとえば、パートナーは SAML レスポンスと宛先 URL をフォームに埋め込み、クリックすると Google にフォームが送信されるボタンを表示することができます。また、自動的にフォームを Google に送信する JavaScript をページに含めることも可能です。
- Google の ACS は、パートナーの公開鍵を使用して SAML レスポンスを確認します。レスポンスが正常に確認されると、ACS は宛先 URL にユーザーをリダイレクトします。
- ユーザーは宛先 URL にリダイレクトされ、Google にログインします。