方法: WIF を使用してクレーム対応 ASP.NET MVC Web アプリケーションをビルドするHow To: Build Claims-Aware ASP.NET MVC Web Application Using WIF

対象Applies To

  • Microsoft® Windows® Identity Foundation (WIF)Microsoft® Windows® Identity Foundation (WIF)

  • ASP.NET® MVCASP.NET® MVC

まとめSummary

この操作方法では、簡単なクレーム対応 ASP.NET MVC Web アプリケーションを作成するための詳細な手順を示します。This How-To provides detailed step-by-step procedures for creating simple claims-aware ASP.NET MVC web application. また、クレーム ベースの認証を正常に実装するために簡単なクレーム対応 ASP.NET MVC Web アプリケーションをテストする方法も示します。It also provides instructions how to test the simple claims-aware ASP.NET MVC web application for successful implementation of claims-based authentication. この操作方法には、セキュリティ トークン サービス (STS) の詳細な作成手順は含まれていません。既に STS が構成済みであると想定します。This How-To does not have detailed instructions for creating a Security Token Service (STS), and assumes you have already configured an STS.

目次Contents

  • 目的Objectives

  • 手順の要約Summary of Steps

  • 手順 1 – 簡単な ASP.NET MVC アプリケーションを作成するStep 1 – Create Simple ASP.NET MVC Application

  • 手順 2 – クレーム ベースの認証用の ASP.NET MVC アプリケーションを構成するStep 2 – Configure ASP.NET MVC Application for Claims-Based Authentication

  • 手順 3 – ソリューションをテストするStep 3 – Test Your Solution

  • 関連項目Related Items

目的Objectives

  • クレーム ベースの認証用の ASP.NET MVC Web アプリケーションを構成するConfigure ASP.NET MVC web application for claims-based authentication

  • クレーム対応 ASP.NET MVC Web アプリケーションが正常であることをテストするTest successful claims-aware ASP.NET MVC web application

手順の要約Summary of Steps

  • 手順 1 – 簡単な ASP.NET MVC アプリケーションを作成するStep 1 – Create Simple ASP.NET MVC Application

  • 手順 2 – クレーム ベースの認証用の ASP.NET MVC アプリケーションを構成するStep 2 – Configure ASP.NET MVC Application for Claims-Based Authentication

  • 手順 3 – ソリューションをテストするStep 3 – Test Your Solution

手順 1 – 簡単な ASP.NET MVC アプリケーションを作成するStep 1 – Create Simple ASP.NET MVC Application

この手順では、新しい ASP.NET MVC アプリケーションを作成します。In this step, you will create a new ASP.NET MVC application.

簡単な ASP.NET MVC アプリケーションを作成するにはTo create simple ASP.NET MVC application

  1. Visual Studio を起動し、[ファイル][新規作成][プロジェクト] の順にクリックします。Start Visual Studio and click File, New, and then Project.

  2. [新しいプロジェクト] ウィンドウで、[ASP.NET MVC 3 Web アプリケーション] をクリックします。In the New Project window, click ASP.NET MVC 3 Web Application.

  3. [名前] で、「TestApp」と入力して [OK] を押します。In Name, enter TestApp and press OK.

  4. [新しい ASP.NET MVC 3 プロジェクト] ダイアログで、使用可能なテンプレートから [インターネット アプリケーション] を選択し、[ビュー エンジン][Razor] に設定されていることを確認して [OK] をクリックします。In the New ASP.NET MVC 3 Project dialog, select Internet Application from the available templates, ensure View Engine is set to Razor, and then click OK.

  5. 新しいプロジェクトが開いたら、ソリューション エクスプローラー[TestApp] プロジェクトを右クリックして [プロパティ] オプションを選択します。When the new project opens, right-click the TestApp project in Solution Explorer and select the Properties option.

  6. プロジェクトのプロパティ ページで、左側の [Web] タブをクリックし、[ローカル IIS Web サーバーを使用する] オプションが選択されていることを確認します。On the project’s properties page, click on the Web tab on the left and ensure that the Use Local IIS Web Server option is selected.

手順 2 – クレーム ベースの認証用の ASP.NET MVC アプリケーションを構成するStep 2 – Configure ASP.NET MVC Application for Claims-Based Authentication

この手順では、構成エントリを ASP.NET MVC Web アプリケーションの Web.config 構成ファイルに追加して、クレーム対応にします。In this step you will add configuration entries to the Web.config configuration file of your ASP.NET MVC web application to make it claims-aware.

クレーム ベースの認証用の ASP.NET MVC アプリケーションを構成するにはTo configure ASP.NET MVC application for claims-based authentication

  1. 次の構成セクションの定義を Web.config 構成ファイルに追加します。Add the following configuration section definitions to the Web.config configuration file. これで、Windows Identity Foundation に必要な構成セクションが定義されます。These define configuration sections required by Windows Identity Foundation. <configuration> 開始要素のすぐ後に定義を追加します。Add the definitions immediately after the <configuration> opening element:

    <configSections>  
        <section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />  
        <section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />  
    </configSections>  
    
  2. 次のように、アプリケーションのフェデレーション メタデータへのアクセスを有効にする <location> 要素を追加します。Add a <location> element that enables access to the application’s federation metadata:

    <location path="FederationMetadata">  
        <system.web>  
            <authorization>  
                <allow users="*" />  
            </authorization>  
        </system.web>  
    </location>  
    
  3. <system.web> 要素内で以下の構成エントリを追加して、ユーザーを拒否し、ネイティブ認証を無効にし、認証を管理するために WIF を有効にします。Add the following configuration entries within the <system.web> elements to deny users, disable native authentication, and enable WIF to manage authentication.

    <authorization>  
        <deny users="?" />  
    </authorization>  
    <authentication mode="None" />  
    
  4. 以下の Windows Identity Foundation 関連の構成エントリを追加し、ASP.NET アプリケーションの URL とポート番号が、<audienceUris> エントリ、<wsFederation> 要素の realm 属性、および <wsFederation> 要素の reply 属性の値と一致することを確認します。Add the following Windows Identity Foundation related configuration entries and ensure that your ASP.NET application’s URL and port number match the values in the <audienceUris> entry, realm attribute of the <wsFederation> element, and the reply attribute of the <wsFederation> element. また、issuer の値がセキュリティ トークン サービス (STS) URL に適したものであることを確認します。Also ensure that the issuer value fits your Security Token Service (STS) URL.

    <system.identityModel>  
        <identityConfiguration>  
            <audienceUris>  
                <add value="http://localhost:28503/" />  
            </audienceUris>  
            <issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">  
                <trustedIssuers>  
                    <add thumbprint="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234" name="YourSTSName" />  
                </trustedIssuers>   
            </issuerNameRegistry>  
            <certificateValidation certificateValidationMode="None" />  
        </identityConfiguration>  
    </system.identityModel>  
    <system.identityModel.services>  
        <federationConfiguration>  
            <cookieHandler requireSsl="false" />  
            <wsFederation passiveRedirectEnabled="true" issuer="http://localhost:13922/wsFederationSTS/Issue" realm="http://localhost:28503/" reply="http://localhost:28503/" requireHttps="false" />  
        </federationConfiguration>  
    </system.identityModel.services>  
    
  5. System.IdentityModel アセンブリに参照を追加します。Add reference to the System.IdentityModel assembly.

  6. ソリューションをコンパイルして、エラーがあるかどうかを確認します。Compile the solution to make sure there are errors.

手順 3 – ソリューションをテストするStep 3 – Test Your Solution

この手順では、クレーム ベースの認証用に構成された ASP.NET MVC Web アプリケーションをテストします。In this step you will test your ASP.NET MVC web application configured for claims-based authentication. 基本テストを実行するには、セキュリティ トークン サービス (STS) で発行されたトークンでクレームを表示する簡単なコードを追加します。To perform basic test you will add simple code that displays claims in the token issued by the Security Token Service (STS).

クレーム ベースの認証用の ASP.NET MVC アプリケーションをテストするにはTo test your ASP.NET MVC application for claims-based authentication

  1. ソリューション エクスプローラーで、Controllers フォルダーを展開し、エディターで HomeController.cs ファイルを開きます。In the Solution Explorer, expand the Controllers folder and open HomeController.cs file in the editor. Index メソッドに次のコードを追加します。Add the following code to the Index method:

    public ActionResult Index()  
    {  
        ViewBag.ClaimsIdentity = Thread.CurrentPrincipal.Identity;  
    
        return View();  
    }  
    
  2. ソリューション エクスプローラーで、Views フォルダーを展開してから Home フォルダーを展開し、エディターで Index.cshtml ファイルを開きます。In the Solution Explorer expand Views and then Home folders and open Index.cshtml file in the editor. その内容を削除し、次のマークアップを追加します。Delete its contents and add the following markup:

    @{  
        ViewBag.Title = "Home Page";  
    }  
    
    <h2>Welcome: @ViewBag.ClaimsIdentity.Name</h2>  
    <h3>Values from Identity</h3>  
    <table>  
        <tr>  
            <th>  
                IsAuthenticated   
            </th>  
            <td>  
                @ViewBag.ClaimsIdentity.IsAuthenticated   
            </td>  
        </tr>  
        <tr>  
            <th>  
                Name   
            </th>          
            <td>  
                @ViewBag.ClaimsIdentity.Name  
            </td>          
        </tr>  
    </table>  
    <h3>Claims from ClaimsIdentity</h3>  
    <table>  
        <tr>  
            <th>  
                Claim Type  
            </th>  
            <th>  
                Claim Value  
            </th>  
            <th>  
                Value Type  
            </th>  
            <th>  
                Subject Name  
            </th>          
            <th>  
                Issuer Name  
            </th>          
        </tr>  
            @foreach (System.Security.Claims.Claim claim in ViewBag.ClaimsIdentity.Claims ) {  
        <tr>  
            <td>  
                @claim.Type  
            </td>  
            <td>  
                @claim.Value  
            </td>  
            <td>  
                @claim.ValueType  
            </td>  
            <td>  
                @claim.Subject.Name  
            </td>  
            <td>  
                @claim.Issuer  
            </td>  
        </tr>  
    }  
    </table>  
    
  3. F5 キーを押して、ソリューションを実行します。Run the solution by pressing the F5 key.

  4. セキュリティ トークン サービスで発行されたトークンでクレームを表示するページが表示されます。You should be presented with the page that displays the claims in the token that was issued to you by Security Token Service.