WCF 証明書利用者アプリケーションを構築する方法

ここでは、STS は使用しません。 単純に、現在のユーザーの要求にアクセスする WCF サービスを IClaimsPrincipal を介して作成します。 そのためには、FedUtil で ClaimsPrincipalHttpModule をプロジェクトに追加します。 このモジュールで、現在のユーザーの IPrincipal オブジェクトを IClaimsPrincipal オブジェクトに変換できます。

注意

FedUtil が正常に機能するには、Visual Studio を管理者特権モードで実行する必要があります。

最初に、「要求に対応する WCF サービス」の説明に従って、要求に対応する WCF サービスを作成します。

次に、ソリューション エクスプローラーでプロジェクトを右クリックし、[STS 参照の追加] を選択します。

392cd2c5-5098-44c7-9738-f43e40da090f

この操作により、FedUtil ツールが実行されます。 FedUtil のダイアログ ボックスが開き、[フェデレーション ユーティリティ ウィザードの開始] ページが表示されます。

35d73636-c363-47cf-a67f-16b3ca195d40

このページでは、2 つのフィールドへの入力が必要です。

  1. [アプリケーション構成の場所]: WCF サービスの web.config ファイルへのパスを指定します。 Visual Studio の外部から FedUtil を実行した場合、このフィールドは空の状態で表示されます。 Visual Studio の内部から FedUtil を実行した場合、このフィールドにはそのプロジェクトの web.config ファイルへのパスが既に入力されています。 web.config ファイルが既に存在していて、既定の状態 (つまり、Visual Studio で生成されたままの状態) であることが必要です。 同一の web.config ファイルに対して FedUtil を複数回実行しても、web.config ファイルに追加する内容が上書きされるだけです。

  2. [アプリケーション URI]: WCF サービスの URI を指定します。 これは、.svc ファイルです。 Visual Studio の外部から FedUtil を実行した場合、このフィールドは空の状態で表示されます。 Visual Studio の内部から FedUtil を実行した場合、このフィールドにはそのプロジェクトに対応する 2 つの URI が既に入力されています。その一方は localhost を使用し、もう一方はコンピューターの完全修飾ドメイン名を使用します (使用できる場合)。 この URI は、要求に対応するアプリケーションの構成時に領域の値として使用されます。 URI がセキュリティで保護されていない場合 (つまり "https://" で始まる URI でない場合)、[次へ] をクリックすると警告が表示されます。

情報を入力したら、[次へ] をクリックします。 [アプリケーション情報] ページが表示されます。

c869d84f-313b-436c-800c-48570365b607

構成するサービスの名前とエンドポイントのコントラクトの名前を選択し、[次へ] をクリックします。 サービスに複数のエンドポイントがあり、特定のエンドポイントに対してのみ要求を構成する場合は、対象のエンドポイントを選択します。

[Security Token Service] ページが開きます。

bdecc626-5ded-43dc-b569-3513a2bddbeb

[STS なし] をオンにします。 これにより、要求に対応する WCF サービスが作成されます。STS で要求を発行する必要はありません。 サービスは、フレームワークで作成された既定の要求を取得します。 [次へ] をクリックします。 [概要] ページが表示されます。

8619f6b7-c5a8-4da8-87e9-de5bb9f67638

[完了] をクリックします。

web.config ファイルを開くと、FedUtil によって変更されていることを確認できます。

  • <configuration>/<configSections> 要素には、microsoft.IdentityModel 構成セクションへの参照が含まれています。

    <section name="microsoft.identityModel" type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    
  • <configuration> 要素には、以前に指定したアプリケーション URI を含む microsoft.identityModel 構成セクションが含まれています。

    <microsoft.identityModel> <service name="ClaimsAwareService1.Service"> <audienceUris> <add value="https://localhost:64705/ClaimsAwareService1/Service.svc" /> </audienceUris> </service> </microsoft.identityModel>