コード サンプル: 単純な MVC 2 を ASP.NET する

更新日: 2015 年 6 月 19 日

適用先:Azure

このサンプルでは、Microsoft Azure Active Directory Access Control (Access Control サービスまたは ACS とも呼ばれます) を ASP.NET MVC アプリケーションと統合する方法を示します。 このサンプルのコードは、Microsoft Azure Active Directory Access Control (ACS) コード サンプル パッケージの ASPNETSimpleMVC (C#\Websites\ASPNETSimpleMVC) サブディレクトリにあります。

前提条件

このサンプルを実行するには、次のものが必要になります。

  1. Azure ホームページのアカウントとAccess Control名前空間。 このサンプルでは、Microsoft Azure管理ポータルに移動 (https://manage.WindowsAzure.com)、サインイン、および Active Directory のクリックの名前を前提としています。 (トラブルシューティングのヒント: "Active Directory" 項目が見つからないか使用できません)、Access Control名前空間名が異なる場合でも acssamples です。

  2. Visual Studio 2010 (任意のバージョン)

  3. Windows Identity Foundation SDK

詳細については、 ACS の前提条件 (https://go.microsoft.com/fwlink/?LinkId=221065) を参照してください。

サンプルを構成する

このサンプルに必要な ACS 構成は、ACS 管理ポータルまたは ACS 管理サービスを使用して実行できます。 このトピックでは両方のオプションについて説明します。

  1. オプション 1: ACS 管理ポータルを使用したサンプルの構成

  2. オプション 2: ACS 管理サービスを使用したサンプルの構成

オプション 1: ACS 管理ポータルを使用したサンプルの構成

ACS 管理ポータルを使用してサンプルを構成するには

  1. Microsoft Azure管理ポータル (https://manage.WindowsAzure.com) に移動し、サインインし、[Active Directory] をクリックします。 (トラブルシューティングのヒント: "Active Directory" 項目が見つからないか、使用できません)

  2. アクセス制御名前空間を作成するには、[新規] をクリックして [App サービス] をクリックし、[アクセス制御] をクリックしてから [簡易作成] をクリックします。 または、[アクセス制御名前空間][新規] を順にクリックします。

  3. アクセス制御名前空間を管理するには、名前空間をクリックしてしてから [管理] をクリックします。 または、[アクセス制御名前空間] をクリックして名前空間を選択し、[管理] をクリックします。

    このアクションで Access Control Service の管理ポータルが開きます。

  4. ログインするときに Web サイトのユーザーが使用する ID プロバイダーとの関係を構築するには、[ID プロバイダー] をクリックし、[Yahoo!][Google] を追加します。 メイン ページに戻るには、[ホーム] をクリックします。

  5. ACS にアプリケーションを登録するには、Access Control サービス管理ポータルのホーム ページで[証明書利用者アプリケーション]、[追加] の順にクリックし、フォームに次の情報を入力します。

    • [名前] フィールドに「ASPNET Simple MVC Sample」と入力します。

    • [ 領域 ] フィールドに「〘」と入力します。 https://localhost:63000/

    • [ 戻る URL ] フィールドに「〘」と入力します。 https://localhost:63000/

    • [ エラー URL ] フィールドに「〘」と入力します。 https://localhost:63000/Error

    • [トークン形式] フィールドで、[SAML 2.0] を選択します。

    • [トークン署名] フィールドで、[サービスの名前空間証明書を使用 (標準)] を選択します。

  6. [保存] をクリックし、[ホーム] をクリックしてホーム ページに戻ります。

  7. 証明書利用者が登録されたら、ACS がアプリケーションに発行する要求を決定するルールを作成します。 このサンプルでは、ID プロバイダーが発行したすべての要求をパススルーするだけです。 このルールを作成するには、[ルール グループ] をクリックし、[ASPNET Simple MVC Sample の既定のルール グループ] をクリックします。 ページの下部近くにある [生成] リンクをクリックします。 3 つの ID プロバイダー Yahoo!、Google、Windows Live ID (Microsoft アカウント) が選択されていることを確認し、[生成] をクリックします。

  8. [保存] をクリックし、メイン ページに戻ります。

  9. ACS が構成されている状態で、Visual Studioを開きます。

オプション 2: ACS 管理サービスを使用したサンプルの構成

Visual Studioサンプル ソリューションには、ACS 管理サービスと共通クラス ライブラリで定義されている共通ヘルパーを使用する ConfigureSample というコンソール アプリケーションがあります。 このアプリケーションを使用して、このサンプルで使用するAccess Control名前空間を構成できます。

ACS 管理サービスを使用してサンプルを構成するには

  1. サンプルを構成するには、SamplesConfiguration.cs (acs\Management\ManagementService\Common) を開きます。 Common クラス ライブラリの SamplesConfiguration クラスのプレースホルダーを、Access Control名前空間に関する情報に置き換えます。 この情報は、ACS 管理ポータルで確認できます。

    ACS 管理ポータルに移動するには:Microsoft Azure管理ポータル (https://manage.WindowsAzure.com) に移動し、サインインし、[Active Directory] をクリックします。 (トラブルシューティングのヒント: "Active Directory" 項目が見つからないか、使用できません)Access Control名前空間を管理するには、名前空間を選択し、[管理] をクリックします。 または、[アクセス制御名前空間] をクリックして名前空間を選択し、[管理] をクリックします。

    • ServiceNamespace - Access Control名前空間の名前を入力します。

    • ManagementServiceIdentityName - ACS 管理サービス アカウントの名前を入力します。 既定値は ManagementClient です

      管理サービス アカウント名を見つけるには、ACS 管理ポータルで [ 管理サービス] をクリックします。 [管理サービス アカウント] にアカウントが名前順に一覧表示されます。

    • ManagementServiceIdentityKey - 管理サービス アカウントのパスワードを入力します。

      管理サービス アカウントのパスワードを見つけるには、ACS 管理ポータルで [ 管理サービス] をクリックします。 管理サービス アカウントの名前をクリックしてから、[資格情報] で [パスワード] をクリックします。 [パスワード] フィールドにパスワードが表示されます。 パスワードをコピーするには、[パスワードの表示] をクリックします。

  2. Visual Studioで ConfigureSample アプリケーションを実行します。これにより、このサンプルを実行するように ACS が構成されます。

サンプルの実行

サンプルを実行するには

  1. Visual Studioの Websites\ASPNETSimpleMVC\ASPNETSimpleMVC.sln にあるサンプルを開きます

  2. F5 キーを押してアプリケーションを起動します。

  3. ブラウザーを閉じてアプリケーションを停止し、ACS の構成に進みます。

  4. プロジェクトを右クリックし、ショートカット メニューから [STS 参照の追加] を選択します。

  5. ダイアログ ボックスで、[アプリケーション URI] フィールドに Web アプリケーションのルートを入力し、[次へ] をクリックします。 このサンプルでは、この値は https://localhost:63000/

    注意

    末尾のスラッシュは、証明書利用者の ACS に入力した値と一緒に並ぶので重要です。 ウィザードによって、サイトで SSL を使用していないという警告が表示されます。 [はい] をクリックしてこの警告を受け入れます。ただし、実稼働 Web サイトでは、このようなシナリオではほとんど SSL を使用する必要があることに注意してください。

  6. 次のウィンドウで、[既存の STS を使用] ラジオ ボタンを選択し、Access Control名前空間によって発行されたWS-Federation メタデータの URI を入力します。 URI を見つけるには、ACS ポータルで [ アプリケーション統合] をクリックします。 Access Control名前空間の名前が acssamples の場合、URI は https://acssamples.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml. この値を入力したら、[次へ] をクリックします。

  7. Web サイトでは暗号化されたトークンを必要としないため、[次へ] をクリックし、[終了] をクリックします。

  8. ACS とアプリケーションが構成されました。 Visual Studioで F5 キーを押してアプリケーションを実行します。 お使いのブラウザーは、ACS でホストされているホーム領域検出ページに移動されます。

  9. [Google] をクリックします。 ブラウザーは Google サインイン ページにリダイレクトされます。

  10. Google アカウントの資格情報を入力し、ユーザーの同意フォームを拒否します。

  11. ブラウザーに戻り https://localhost:63000/Error 、サイトへのログインがキャンセルされたことを示すカスタム エラー文字列を表示する必要があります。

  12. 再試行するには、リンクをクリックし、ID プロバイダーをクリックします。

  13. ブラウザーが ID プロバイダーを参照している場合は、テスト アカウントの資格情報を入力します。ただし、今回はユーザー同意フォームを受け入れます。

  14. ブラウザーに戻る https://localhost:63000/必要があります。 テスト ID の名前がページの右上に表示されることに注目してください。 このデータは ID プロバイダーによって発行され、ACS を介してアプリケーションに返されました。