WCF 証明書利用者アプリケーションを構築する方法
ここでは、STS は使用しません。 単純に、現在のユーザーの要求にアクセスする WCF サービスを IClaimsPrincipal を介して作成します。 そのためには、FedUtil で ClaimsPrincipalHttpModule をプロジェクトに追加します。 このモジュールで、現在のユーザーの IPrincipal
オブジェクトを IClaimsPrincipal オブジェクトに変換できます。
注意
FedUtil が正常に機能するには、Visual Studio を管理者特権モードで実行する必要があります。
最初に、「要求に対応する WCF サービス」の説明に従って、要求に対応する WCF サービスを作成します。
次に、ソリューション エクスプローラーでプロジェクトを右クリックし、[STS 参照の追加] を選択します。
この操作により、FedUtil ツールが実行されます。 FedUtil のダイアログ ボックスが開き、[フェデレーション ユーティリティ ウィザードの開始] ページが表示されます。
このページでは、2 つのフィールドへの入力が必要です。
[アプリケーション構成の場所]: WCF サービスの web.config ファイルへのパスを指定します。 Visual Studio の外部から FedUtil を実行した場合、このフィールドは空の状態で表示されます。 Visual Studio の内部から FedUtil を実行した場合、このフィールドにはそのプロジェクトの web.config ファイルへのパスが既に入力されています。 web.config ファイルが既に存在していて、既定の状態 (つまり、Visual Studio で生成されたままの状態) であることが必要です。 同一の web.config ファイルに対して FedUtil を複数回実行しても、web.config ファイルに追加する内容が上書きされるだけです。
[アプリケーション URI]: WCF サービスの URI を指定します。 これは、.svc ファイルです。 Visual Studio の外部から FedUtil を実行した場合、このフィールドは空の状態で表示されます。 Visual Studio の内部から FedUtil を実行した場合、このフィールドにはそのプロジェクトに対応する 2 つの URI が既に入力されています。その一方は localhost を使用し、もう一方はコンピューターの完全修飾ドメイン名を使用します (使用できる場合)。 この URI は、要求に対応するアプリケーションの構成時に領域の値として使用されます。 URI がセキュリティで保護されていない場合 (つまり "https://" で始まる URI でない場合)、[次へ] をクリックすると警告が表示されます。
情報を入力したら、[次へ] をクリックします。 [アプリケーション情報] ページが表示されます。
構成するサービスの名前とエンドポイントのコントラクトの名前を選択し、[次へ] をクリックします。 サービスに複数のエンドポイントがあり、特定のエンドポイントに対してのみ要求を構成する場合は、対象のエンドポイントを選択します。
[Security Token Service] ページが開きます。
[STS なし] をオンにします。 これにより、要求に対応する WCF サービスが作成されます。STS で要求を発行する必要はありません。 サービスは、フレームワークで作成された既定の要求を取得します。 [次へ] をクリックします。 [概要] ページが表示されます。
[完了] をクリックします。
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>