方法: WCF URL 予約を制限付きの予約に置き換える
URL 予約を使用すると、特定の URL または URL セットからメッセージを受信するユーザーを制限できます。予約は、URL テンプレート、アクセス制御リスト (ACL)、およびフラグのセットで構成されます。URL テンプレートは、予約の対象となる URL を定義します。URL テンプレートが処理される方法詳細情報、「受信要求のルーティング」を参照してください。ACL は、指定された URL からメッセージを受信できるユーザーまたはユーザー グループを制御します。フラグは、その予約で、ユーザーまたはグループに URL を直接リッスンする権限を与えるか、リッスンを他のプロセスに委任する権限を与えるかを指定します。
既定のオペレーティング システム構成の一部として、Windows Communication Foundation (WCF) はポート 80 に対してグローバルにアクセス可能な予約を作成します。これにより、すべてのユーザーは、双方向通信にデュアル HTTP バインディングを使用するアプリケーションを実行できます。この予約の ACL はすべてのユーザー向けなので、管理者は URL または URL セットをリッスンする権限を明示的に許可または拒否することはできません。このトピックでは、この予約を削除し、制限された ACL を使用する予約を再作成する方法について説明します。
Windows Vista または Windows Server 2008 では、管理者特権でのコマンド プロンプトから「netsh http show urlacl
」と入力することで、すべての HTTP URL 予約を表示できます。次に WCF URL 予約の例を示します。
Reserved URL : http://+:80/Temporary_Listen_Addresses/
User: \Everyone
Listen: Yes
Delegate: No
SDDL: D:(A;;GX;;;WD)
この予約には、WCF アプリケーションが双方向通信にデュアル HTTP バインディングを使用する際の URL テンプレートが含まれています。この形式の URL は、デュアル HTTP バインディングを介して通信する際に、WCF サービスが WCF クライアントにメッセージを返信するために使用されます。 すべてのユーザーに対して、URL をリッスンする権限が与えられていますが、リッスンを他のプロセスに委任する権限は与えられていません。また、ACL は SSDL (Security Descriptor Definition Language) で記述されています。SSDL 詳細情報、「SSDL」を参照してください。
WCF URL 予約を削除するには
[スタート] ボタンをクリックし、[すべてのプログラム]、[アクセサリ] の順にポイントします。次に、[コマンド プロンプト] を右クリックし、表示されるコンテキスト メニューで [管理者として実行] をクリックします。ユーザー アカウント制御 (UAC) のウィンドウで、続行するためのアクセス許可を要求された場合は、[続行] をクリックします。
コマンド プロンプト ウィンドウで、「netsh http delete urlacl url=http://+:80/Temporary_Listen_Addresses/」と入力します。
予約が正常に削除されると、次のメッセージが表示されます。URL 予約を正常に削除しました
新しいセキュリティ グループおよび新しい制限付き URL 予約の作成
WCF URL 予約を制限付きの予約に置き換えるには、まず新しいセキュリティ グループを作成する必要があります。この操作は、コマンド プロンプトを使用する方法か、コンピューターの管理コンソールを使用する方法で行うことができます。行う必要があるのはいずれか一方のみです。
コマンド プロンプトで新しいセキュリティ グループを作成するには
[スタート] ボタンをクリックし、[すべてのプログラム]、[アクセサリ] の順にポイントします。次に、[コマンド プロンプト] を右クリックし、表示されるコンテキスト メニューで [管理者として実行] をクリックします。ユーザー アカウント制御 (UAC) のウィンドウで、続行するためのアクセス許可を要求された場合は、[続行] をクリックします。
コマンド プロンプトで、「net localgroup "<セキュリティ グループ名>" /comment:"<セキュリティ グループの説明>" /add」と入力します。<セキュリティ グループ名> は作成するセキュリティ グループの名前に、<セキュリティ グループの説明> はそのセキュリティ グループに適した説明に置き換えて入力してください。
セキュリティ グループが正常に作成されると、次のメッセージが表示されます。コマンドは、正常に終了しました。
コンピューターの管理コンソールで新しいセキュリティ グループを作成するには
[スタート] ボタンをクリックして [コントロール パネル]、[管理ツール] の順にポイントし、[コンピューターの管理] をクリックしてコンピューターの管理コンソールを開きます。ユーザー アカウント制御 (UAC) のウィンドウで、続行するためのアクセス許可を要求された場合は、[続行] をクリックします。
[システム ツール] をクリックして、[ローカル ユーザーとグループ] をクリックします。次に、[グループ] フォルダーを右クリックし、表示されるコンテキスト メニューで [新しいグループ] をクリックします。作成する新しいセキュリティ グループについて、[グループ名] や [説明] などの情報を入力し、[作成] をクリックしてセキュリティ グループを作成します。
制限付き URL 予約を作成するには
[スタート] ボタンをクリックし、[すべてのプログラム]、[アクセサリ] の順にポイントします。次に、[コマンド プロンプト] を右クリックし、表示されるコンテキスト メニューで [管理者として実行] をクリックします。ユーザー アカウント制御 (UAC) のウィンドウで、続行するためのアクセス許可を要求された場合は、[続行] をクリックします。
コマンド プロンプトで、「netsh http add urlacl url=http://+:80/Temporary_Listen_Addresses/ user="<コンピューター名>\<セキュリティ グループ名>」と入力します。<コンピューター名> はグループを作成するコンピューター名に、<セキュリティ グループ名> は上の手順で作成したセキュリティ グループ名に置き換えて入力してください。
予約が正常に作成されると、"URL 予約を正常に追加しました" というメッセージが表示されます。