WCF LOB アダプター SDK を使用して IIS でアダプターをホストする
このセクションでは、インターネット インフォメーション サービス (IIS) で Microsoft Windows Communication Foundation (WCF) 基幹業務 (LOB) アダプター SDK を使用して構築されたアダプターをホストする方法について説明します。 その他のホスティング オプションの詳細については、「 ホスティング サービス」を参照してください。
IIS と ASP.NET を使用する
ASP.NET が有効になっている IIS を使用して、WCF LOB アダプター SDK で作成されたアダプターを発行できます。 WCF LOB アダプター SDK によって作成されたアダプターをホストするには、WCF サービスを発行するためのインターネット インフォメーション サービス (IIS) を構成します。 次に、ASP.NET で WCF アダプターを使用する方法を検討します。
IIS で WCF サービスをホストする場合は、サイド バイ サイド とA SP.NET 互換モードの 2 つのホスティング モードを使用できます。 既定のホスティング モードはサイド バイ サイドです。 サイド バイ サイド モードは、他の WCF ホスティング ソリューションと一貫して動作します。 したがって、IIS でホストされている WCF サービスは、コンソール アプリケーションでホストされているサービスと同じように動作します。 ただし、Web 開発者は ASP.NET のような動作を期待する可能性があるため、これは望ましくない場合があります。 たとえば、サイド バイ サイド モードでは、WCF は web.config の構成要素で <system.web> <authorization>
指定された URL ベースの承認規則に準拠しません。
ASP.NET 互換モードを使用すると、WCF サービスは ASP.NET のすべての機能を使用し、ASPX ページと同じように動作できます。ただし、この機能を有効にするには、WCF アダプターを作成するときに追加の手順を実行する必要があります。 詳細については、次を参照してください。
インターネット インフォメーション サービスでのホスティング
WCF アダプター サービス開発ウィザードを使用する
WCF LOB アダプター サービス開発ウィザードを使用して、インターネット インフォメーション サービス (IIS) 内でアダプターをホストするための Web プロジェクトの作成を自動化します。 ホストされたアダプターは、Windows Communication Framework (WCF) または Web サービスを使用してクライアントによって使用できます。
IIS でホストされている WCF サービスとしてアダプターを発行する
Visual Studio を開きます。 [ ファイル ] メニューの [ 新規作成] を選択し、[ Web サイト] を選択します。
[テンプレート] で[Visual C#] を選択し、[WCF アダプター サービス] を選択します。
ソリューションを保存するフォルダーを入力し、[OK] を選択します。 WCF アダプター サービス開発ウィザードが起動します。
[説明] ページで [次へ] をクリックします。
[ 操作の選択 ] ページで、このホステッド サービスに使用するバインド、コントラクト、および操作を指定します。
[ バインドの選択 ] ボックスの一覧で、使用するアダプター バインドを選択し、[ 構成] をクリックします。 [ アダプターの構成 ] ダイアログ ボックスが表示されます。 アダプターを呼び出し、操作メタデータを取得するために必要な値を指定します。
[ セキュリティ ] タブで、 クライアント資格情報 をアダプターに渡すときに使用する [クライアント資格情報の種類] を選択します。
[資格情報の種類] 説明 なし クライアントは資格情報を提示する必要はありません。 Windows クライアントは Windows 資格情報を使用します。 ユーザー名 クライアントはユーザー名とパスワードを指定します。 [証明書] クライアントは X.509 証明書を使用して認証されます。 この値が設定されている場合は、[クライアント証明書] 領域の [参照] をクリックし、使用する証明書を選択します。 [ URI プロパティ ] タブで、アダプターに必要な URI パラメーターを指定します。 このタブに表示されるエントリは、アダプターの クラスで
ConnectionUri Properties
公開されているプロパティによって異なります。[ バインドのプロパティ ] タブで、アダプターに必要なバインド プロパティの値を指定します。 [ 全般] セクションには、タイムアウト値などの一般的な設定が含まれています。 クラスで公開されているカスタム プロパティに基づいて、追加のプロパティが
AdapterBinding
一覧表示されます。
構成値を指定したら、[ 接続] をクリックします。
[ コントラクトの種類の選択 ] ボックスの一覧から、使用するコントラクトを選択します。 これにより、[カテゴリ ツリーの 選択 ] コントロールに、このアダプターから使用できるカテゴリと操作の一覧が設定されます。 アダプターがクラスを介して検索機能を
MetadataRetrievalClient
実装する場合は、[ カテゴリ内 の検索] フィールドに検索語句を入力して、検索語句を含むカテゴリと操作のみを返すことができます。Note
選択できるのは送信操作のみです。
[ 利用可能なカテゴリと操作 ] ボックスで、追加する項目を選択し、[ 追加] をクリックします。 目的の項目を追加したら、[ 次へ] をクリックします。
[ サービスとエンドポイントの動作の構成] ページで 、このアダプターに必要な動作を設定します。
[ サービス動作の構成] セクションには、サービスの動作を制御するエントリが含まれています。 ウィザードを実行した後、web.config ファイルを編集して、選択したサービスの動作を変更できます。
プロパティ 説明 EnableMetadataExchange この値を True に 設定すると、サービス メタデータをクライアント要求に発行できます。 これは、web.config で serviceMetadata httpGetEnabled=""> を変更<することによっても設定できます。既定値は False です IncludeExceptionDetailsinFault この値を True に設定すると、SOAP エラーでマネージ例外情報がクライアントに返されます。 これは、web.config のincludeExceptionDetailInFaults=""> を使用して serviceDebug を変更<することによっても設定できます。既定値は False です。 名前 サービス動作構成の名前。 UseServiceCertificate この値は、サービスが X.509 証明書を使用してクライアント プロセスに対して自身を認証するかどうかを決定します。 既定値は True です。 Findvalue この値は、証明書ストア内の特定の X.509 証明書を検索するために使用されます。 これは、useServiceCertificate が True に設定されている場合にのみ、web.config 注: このプロパティの値を指定する場合にのみ、serviceCredentials findValue=""> を変更<して設定することもできます。 StoreLocation この値は、指定した証明書を検索するシステム ストアの場所を指定します。 これは、web.config の serviceCredentials storeLocation=""> を変更<することによっても設定できます。メモ:UseServiceCertificate が True に設定されている場合にのみ、このプロパティの値を指定します。 StoreName この値は、指定した証明書を検索する特定のシステム ストアを指定します。 これは、useServiceCertificate が True に設定されている場合にのみ、web.config 注: このプロパティの値を指定する場合にのみ、serviceCredentials storeName=""> を変更<して設定することもできます。 X509FindType 使用する特定の証明書を検索するために、先ほど指定した FindValue で使用する検索の種類。 これは、useServiceCertificate が True に設定されている場合にのみ、web.config 注: このプロパティの値を指定する場合にのみ、serviceCredentials x509FindType=""> を変更<することで設定することもできます。 [ エンドポイント動作の構成] セクションでは、エンドポイントの動作を制御します。
プロパティ 説明 名前 エンドポイントの動作の名前 AuthenticationType この値は、受信ドキュメントのクライアント資格情報を取得する場所をアダプターに指示します。 クライアントがサービスに対して認証するクライアント証明書を指定できるようにするには、これを ClientCredentialUsernamePassword に設定します。 クライアントが HTTP ヘッダーの一部としてユーザー名とパスワードを指定できるようにするには、これを HTTPUsernamePassword に設定します。 ClientCredential インターフェイスを使用してクライアントが資格情報を指定できるようにするには、これを [自動] に設定します。これが失敗した場合、クライアントは HTTP ヘッダーの一部として資格情報を渡すことができます。
この値は、web.config で endpointBehavior adapterSecurityBridgeType> を変更<することによっても設定できます。既定値は Auto です。UsernameHeader これは、ユーザー名をサービスに渡すために使用されるヘッダーの名前を指定します。 HTTP ヘッダーの詳細については、以下の「カスタム HTTP ヘッダーと SOAP ヘッダーのサポート」を参照してください。 https://go.microsoft.com/fwlink/?LinkId=106692
この値は、web.config で endpointBehavior usernameHttpHeader> を変更<して設定することもできます。メモ:AuthenticationType が HTTPUserNamePassword に設定されている場合は、このプロパティの値を指定する必要があります。 Auto に設定されている場合、このプロパティは省略可能です。PasswordHeader これは、ユーザー パスワードをサービスに渡すために使用されるヘッダーの名前を指定します。 HTTP ヘッダーの詳細については、以下の「カスタム HTTP ヘッダーと SOAP ヘッダーのサポート」を参照してください。 https://go.microsoft.com/fwlink/?LinkId=106692
この値は、web.config で endpointBehavior passwordHttpHeader< を変更<して設定することもできます。メモ:AuthenticationType が HTTPUserNamePassword に設定されている場合は、このプロパティの値を指定する必要があります。 Auto に設定されている場合、このプロパティは省略可能です。目的の動作を設定したら、[ 次へ ] をクリックして続行します。
[ サービス エンドポイントのバインドとアドレスの構成] ページで、コントラクトのアドレスとバインドのプロパティを構成できます。 [ 構成するコントラクトの選択 ] ボックスの一覧でコントラクトを選択し、[ コントラクトのアドレスとバインドの構成 ] ダイアログ ボックスに目的の値を入力します。
[バインドのプロパティ] の下にある [ BindingConfiguration] エントリを選択します。 ウィザードでは基本的な HTTP バインドのみがサポートされているため、バインド構成フィールドは自動的に System.ServiceModel.Configuration.BasicHttpBindingElement に設定されます。 このバインドの構成プロパティを変更するには、省略記号 [... ] ボタンをクリックします。 セキュリティで保護された通信チャネルを使用するには、常に Mode プロパティを Transport に設定する必要があります。 これが既定値です。
[EndpointName] を選択し、エンドポイントの目的の名前を入力します。
変更を適用するには、[ 適用] をクリックします。
続行するには、 [次へ] をクリックします。 [概要] ページには、選択されたアダプター操作のツリー構造が一覧表示されます。
概要を確認し、[完了] をクリック します。
ウィザードによって Web プロジェクトが作成され、次のファイルが追加されます。
ファイル 説明 .svc WCF プロキシを参照するサービス ファイル。 .cs WCF プロキシを実装します。 web.config システムの<エンドポイント、<バインディング>、および<動作要素<が>含まれます。Servicemodel> WCF サービス プロジェクトを発行します。
ソリューション エクスプローラーでプロジェクトを右クリックし、[発行] をクリックします。
[ Web サイトの発行 ] ダイアログ ボックスで、WCF サービスのターゲット URL を指定します。
[ このプリコンパイル済みサイトの更新を許可する] を選択します。
[ 固定の名前付けアセンブリと単一ページ アセンブリを使用する] を選択します。
[ プリコンパイル済みアセンブリで厳密な名前付けを有効にする] を選択し、使用する署名キーを指定します。
Web サイトを発行するには、[OK] をクリック します。
サービスが正常に発行されたことを確認します。
IIS 管理コンソールを起動します。 [ スタート] ボタンをクリックし、[ 管理ツール] をポイントして、[ インターネット インフォメーション サービス] をクリックします。
サービスを発行したノードに移動します。 サービスが としてhttp://localhost/myservice発行されている場合は、[インターネット インフォメーション サービス>] [コンピューター名>] [Web サイト] [既定の Web サイト>>] [myservice] の順に移動します。
右側のウィンドウで、.svc ファイルを右クリックし、[ 参照] をクリックします。 Web ページに、サービスに関する情報が表示されます。 クライアント アプリケーションからの WCF または Web サービス呼び出しを使用して、このサービスを使用できるようになりました。
セキュリティ
アダプターがサービス内でホストされている場合、クライアント アプリケーションからの呼び出しはアダプター セキュリティ ブリッジを使用してクライアント資格情報をアダプターに渡します。
WCF クライアントが WCF サービスに認証を送信する場合、通常、サービスは認証を使用します。 ただし、アダプターの場合は、基になる LOB システムで使用する認証情報をキャプチャすることをお勧めします。 これは、エンドポイントの動作として表示されるアダプター セキュリティ ブリッジを介して実装されます。 アダプター開発者は、この機能を利用するために実装する必要のあるものは何もありません。ただし、アダプターを展開するときは、クライアントがサービスに資格情報を提供する方法を検討する必要があります。
メッセージ レベルのセキュリティを使用している場合、アダプター セキュリティ ブリッジは、任意のバインディングでクライアント アプリケーションによって送信された ClientCredentials を取得できます。 基本的な HTTP バインディングを使用している場合は、代わりにカスタム ヘッダーを使用してユーザー名とパスワード情報を渡すように選択できます。 WCF によって提供される ClientCredential クラスを使用して資格情報を渡すことが推奨されますが、多くの Web サービス クライアント アプリケーションでは、カスタム ヘッダーを使用して資格情報を渡す必要があります。
クライアント アプリケーションが提供する ClientCredentials でアダプターが資格情報を検索する構成例を次に示します。 何も見つからない場合、アダプターは指定された HTTP 要求ヘッダーを検索します。
<endpointBehaviors>
<behavior name="customEndpointBehavior">
<endpointBehavior usernameHttpHeader="UNHdr" passwordHttpHeader="PWHdr"
adapterSecurityBridgeType="Auto" />
</behavior>
</endpointBehaviors>