シングル サインアウト

更新日: 2015 年 6 月 19 日

適用先:Azure

Microsoft Azure Active Directory Access Control (Access Control Service または ACS とも呼ばれます) に、シングル サインオンを補完するオプションのシングル サインアウト機能が含まれるようになりました。 その結果、ACS と統合された Web ベースのアプリケーションのユーザーに対して、完全で一貫したサインオンとサインアウトのエクスペリエンスが得られます。

エンド ユーザーが、シングル サインオンをサポートしている証明書利用者アプリケーションからサインアウトすると、ACS は ID プロバイダー サイトから自動的にユーザーをサインアウトさせ、その ID プロバイダーを使用してサインオンしたその他すべてのアプリケーションからもサインアウトさせることができます。 同様に、ユーザーが ID プロバイダーの Web サイトからサインアウトすると、ACS は ID プロバイダーを使用してユーザーがサインオンしたアプリケーションからユーザーを自動的にサインアウトさせることができます。

このトピックでは、シングル サインアウトのしくみと、証明書利用者アプリケーションにシングル サインオンを実装する方法について説明します。 ASP.NET MVC 4 アプリケーションでフェデレーション シングル サインアウトを実装するためのサンプル コードを必ず確認してください。コード サンプル: フェデレーション サインアウト t を使用した MVC 4 の ASP.NET

システム要件

シングル サインアウトを実装するには、次のツールとサービスが必要です。

  • Azure サブスクリプション

  • Visual Studio 2012

シングル サインアウトについて

各ブラウザー セッションで、ユーザーは証明書利用者アプリケーションにサインオンするためにフェデレーション ID プロバイダーを選択できます。 シングル サインアウトでは、ユーザーが ID プロバイダーまたは証明書利用者アプリケーションからサインアウトすると、ユーザーは同じ ID プロバイダーを使用してサインオンしたその他すべての証明書利用者アプリケーションから自動的にサインアウトします。

たとえば、ユーザーはマイクロソフト アカウント (Windows Live ID) を使用して 3 つの ACS 統合証明書利用者アプリケーションにサインオンするとします。 ユーザーがいずれかのアプリケーションからサインアウトすると、自動的にマイクロソフト アカウントおよび他の 2 つのアプリケーションからサインアウトします。

カスタムの WS-Federation および ADFS ID プロバイダー用に、完全なシングル サインアウト サポートが利用できます。 Facebook、Google、Microsoft アカウント、Yahoo! では、制限付きのシングル サインアウト サポートを利用できます。 ID プロバイダー。 これらの ID プロバイダーは、シングル サインアウトを開始できません。ただし、証明書利用者アプリケーションがシングル サインアウトを開始すると、顧客はこれらの ID プロバイダーと、その ID プロバイダーを使用してサインオンした証明書利用者アプリケーションからサインアウトされます。

シングル サインアウトのしくみ

シングル サインアウトは、ID プロバイダーまたは証明書利用者アプリケーションによって開始できます。 このセクションでは、これらのサインアウト プロセスのそれぞれについて確認し、証明書利用者アプリケーションでシングル サインアウトを有効にする方法について説明します。

証明書利用者アプリケーションによるサインアウトの開始

ユーザーが証明書利用者アプリケーションからサインアウトしたときにシングル サインアウトを開始するには、次のパラメーターと共に URL を ACS WS-Federation エンドポイントに送信します。

  • wa: wsignout1.0 に設定

  • wreply: ログアウト ページの URL、つまりサインアウトが完了したときにユーザーがリダイレクトされるページに値を設定します。 この値は、RP ドメイン名の一部である必要があります (例: "https://RP.com/"

  • wtrealm: ACS 管理ポータルの証明書利用者アプリケーションの Realm プロパティの値に設定します。

シングル サインアウトのサンプル URL を次に示します。

https://<YourNamespace>.accesscontrol.windows.net/v2/wsfederation?wa=wsignout1.0&wtrealm=<YourAppRealm>&wreply=<YourAppRealmLogoutPage>

次に例を示します。

https://Fabrikam.accesscontrol.windows.net/v2/wsfederation?wa=wsignout1.0&wtrealm=" https://www.fabrikam.com/" &wreply= https://www.fabrikam.com/logout

証明書利用者が開始するシングル サインアウトを実装するサンプル コードについては、「コード サンプル: フェデレーション サインアウトを使用した MVC 4 の ASP.NET」を参照してください。このサンプルには、wreplywrealm の値を取得し、SignOutRequestMessage クラスのインスタンスを作成する LogoutController.cs のコードが含まれています。

ACS がサインアウト URL を受信すると、ACS は wsignout1.0 要求を送信することで、ID プロバイダーとの顧客のセッションを終了します。 次に、ACS は、ユーザーが ID プロバイダーを使用してサインオンした他の証明書利用者アプリケーションに wsignoutcleanup1.0 メッセージを送信します。

ID プロバイダーがサインアウトを開始

ID プロバイダーが開始したサインアウトは、カスタムの WS-Federation および ADFS ID プロバイダーのみに対してサポートされます。 マイクロソフト アカウント (Windows Live ID)、Google、Yahoo!、および Facebook ID プロバイダーに対してはサポートされません。これらの ID プロバイダーは、ユーザーがサインアウトしたときに ACS または証明書利用者アプリケーションに通知しないためです。

ユーザーがWS-Federationまたは ADFS ID プロバイダーからサインアウトすると、ID プロバイダーは次の形式で ACS に wsignoutcleanup1.0 サインアウト クリーンアップ要求メッセージを送信します。 https://<YourNamespace>.accesscontrol.windows.net/v2/wsfederation?wa=wsignoutcleanup1.0

ACS は wsignoutcleanup1.0 メッセージを受信すると、メッセージの HTTP ヘッダー<Referrer>: https://CustomIDPで参照元を検証することによって、サインイン要求と同じエンドポイントから要求が送信されたことを確認します。ここで、Referrer> の<値は ACSSignOut Cookie のサインイン URL の参照元の値です。

次に、ACS は、ID プロバイダーに関連付けられている現在のユーザーのクライアント ブラウザー セッション内のすべての証明書利用者アプリケーションに wsignoutcleanup1.0 メッセージを送信します。 このプロセスは、「証明書利用者アプリケーションがサインアウトを開始」セクションで説明しているプロセスに類似しています。 ID プロバイダーは、サインアウト プロセスを完了するために制御するサインアウト ページにブラウザーをリダイレクトできます。

シングル サインアウト プロセス

ここでは、シングル サインアウト プロセスの各手順について説明します。 ACS が詳細を処理するため、このプロセスについて理解する必要はありません。 ただし、カスタマイズやデバッグには役立つ場合があります。

シングル サインアウトの詳しい手順

  1. ACS がWS-Federation エンドポイントで signout1.0 要求を受信すると、ACS は ACSSignOut Cookie でサインアウト要求イニシエーターの ID プロバイダーを検索します。

    ACS は次の照合ルールを使用して ID プロバイダーを識別します。

    • サインアウト要求で wtrealm パラメーターが指定されている場合、ACS は各 ID プロバイダーの証明書利用者の一覧で wtrealm 値を検索します。

    • wtrealm が指定されておらず、ACSSignOut Cookie に ID プロバイダー エントリが 1 つしかない場合、ACS は ACSSignOut Cookie の ID プロバイダーを使用します。

    • それ以外の場合、 wtrealm パラメーターがないために試行サインアウトが失敗したことを示すエラー ページが ACS に表示されます。

  2. ACS は、インライン フレーム (<iframe>) 要素を含むページを表示することで、signout1.0 メッセージを ID プロバイダーに送信します。 ACS はまた、SignOutCleanup1.0 メッセージを含む iframe> 要素を、開始側以外のすべてのアクティブなWS-Federation証明書利用者のページに追加<し、ACS は ACSSignOut Cookie から証明書利用者を削除します。

  3. 証明書利用者のサインアウト状態を表示するページには、指定された時間実行してからブラウザーをリダイレクトする JavaScript も含まれています。 ACSSignOut Cookie で wreply パラメーターが指定された場合、JavaScript は wreply 値で示されるアドレスにリダイレクトしてサインアウトを完了します。それ以外の場合、JavaScript は ACS 管理ポータルで指定された証明書利用者の戻り URL にリダイレクトします。

ACS は、ACSSignOut という名前のセッション Cookie を使用して、アプリケーションに対してユーザーを認証した ID プロバイダーを記録します。 Cookie はセッション トレースで表示できます。 セッション Cookie の名前の形式は次のとおりです ACSSignOut.<YourACSNamespace>

ACSSignOut Cookie は、証明書利用者アプリケーションと、ユーザーを認証した ID プロバイダーを識別します。 ACS はシングル サインアウト中に Cookie を使用して、正しい ID プロバイダーがサインアウトされ、その ID プロバイダーを使用してサインオンした他の証明書利用者アプリケーションからユーザーがサインアウトされるようにします。

シングル サインアウトの制限事項

シングル サインアウトを使用するときは、次の制限事項に留意してください。

  • シングル サインアウトを開始できるのは、カスタム WS-Federation ID プロバイダーと ADFS ID プロバイダーだけです。Yahoo、Google、Microsoft アカウント (Windows Live ID) や Facebook などのソーシャル ID プロバイダーは、顧客が ID プロバイダー Web サイトからサインアウトしたときに ACS または証明書利用者アプリケーションに通知しません。 したがって、これらの ID プロバイダーを使用する証明書利用者アプリケーションのユーザーは、ID プロバイダー サイトでサインアウトが発生したときに自動的にサインアウトされません。

  • すべての環境でシングル サインアウトが有効であるとは限りません。 ACS は、証明書利用者アプリケーションからシングル サインアウト メッセージを受信すると、 wsignout1.0 要求を ID プロバイダーに送信し、 wsignoutcleanup1.0 メッセージを他の各証明書利用者アプリケーションに送信します。 ACS は、識別プロバイダーから wsignoutcleanup1.0 要求メッセージを受信すると、各証明書利用者アプリケーションに wsignoutcleanup1.0 メッセージを送信します。 ただし、ACS は、ユーザーをサインアウトさせることで ID プロバイダーまたは証明書利用者アプリケーションが適切に応答することは保証できません。

  • ユーザーが Internet Explorer で Google ID プロバイダーからサインアウトする場合、ブラウザーに "セキュリティで保護されたコンテンツのみ表示" というメッセージが表示されます。 サインアウトを完了するには、ユーザーは [すべてのコンテンツを表示] をクリックする必要があります。 サインアウトが完了すると、ブラウザーは wreply パラメーターの値で指定された URL にリダイレクトされます。

    Internet Explorer 9 およびそれ以降のバージョンの Internet Explorer では、セキュリティで保護されていないサーバーからの画像やスクリプトなど、セキュリティで保護されたページで保護されていないコンテンツを検出すると、セキュリティで保護されたコンテンツに関する通知が表示されます。 この場合、ID プロバイダーからのセキュリティで保護された (HTTPS/SSL) ACS コンテンツと、セキュリティで保護されていない (HTTP) コンテンツに反応しています。 ACS はこの動作を変更または抑制することはできません。

    Internet Explorer 9 以降の「セキュリティで保護されたコンテンツのみが表示されます」の説明に従って、ユーザーは通知を抑制できます。 ただし、この設定はすべての Web サイトに適用され、ユーザーのコンピューターで悪意のあるコンテンツによる攻撃を受けやすくする可能性があるため、セキュリティで保護されていない (HTTP) コンテンツをブロックする既定の設定をお勧めします。

エンド ユーザーがシングル サインアウトを開始できるようにするため、証明書利用者アプリケーションのサインアウト ページでは、ブラウザーを閉じるか、他の証明書利用者アプリケーションと ID プロバイダーの Webサイトから明示的にサインアウトするようにユーザーに指示する必要があります。 ブラウザーのタブ、ウィンドウ、またはページを閉じるだけでは十分ではありません。 キオスク コンピューターなど、共有されているコンピューターや公共の場所にあるコンピューターの場合、ユーザーはブラウザーを閉じる前にブラウザーの履歴を消去する必要があります。

参照

概念

コード サンプル: フェデレーション サインアウトを使用した MVC 4 の ASP.NET

その他の参照情報

WIF での ASP.NET のパッシブ認証