HTTP 送信アダプター

HTTP 送信アダプタは、BizTalk Server からメッセージを取得して、HTTP POST 要求で送信先 URL に送信します。 メッセージの内容は BizTalk メッセージ オブジェクトのボディ部から取得します。 BizTalk メッセージ オブジェクトの他のすべての部分は無視されます。

メッセージが送信先の URL に送信され、BizTalk メッセージング エンジンで HTTP 成功状態コードを受け取ると、メッセージはメッセージ ボックス データベースから削除されます。

HTTP メッセージのリダイレクトがサポートされており、送信ポートに構成できます。

BizTalk Server では、HTTP 送信アダプタを BizTalk のネイティブ アプリケーションとしてホストします。 HTTP 送信アダプタでは、一方向のメッセージ送信と、送信請求 - 応答の送信をサポートします。 HTTP 送信アダプタの送信場所は、送信ポートで構成する一意の URL です。 この一意の URL には、ベース URL に付加したクエリ文字列を含めることができます。

HTTP 送信アダプタのバッチ処理のサポート

HTTP 送信アダプタは、バッチ操作をサポートしていません。

HTTP 送信アダプタのチャンク エンコードのサポート

[ チャンク エンコード構成を有効にする] オプションが有効になっている場合、要求サイズが 8 KB を超える場合、HTTP 送信アダプターはチャンク エンコードを使用して要求メッセージを送信します。 HTTP プロキシ サーバーを使用している場合、チャンク エンコードは使用されず、データは常に段階的に処理されてから送信されます。 [ チャンク エンコード構成を有効にする] オプションは、既定で有効になっています。

送信アダプタで応答メッセージを受信するとき、チャンク エンコードが行われたボディ部を含んだ応答メッセージを受信できます。

HTTP 送信アダプタのクライアント認証

HTTP 送信アダプタは、送信先のサーバーでの認証に、次のいずれかの認証の種類を使用します。

  • Anonymous : 送信先サーバーに接続するとき、資格情報が送信されません。 送信サーバーで匿名認証を許可している場合、送信サーバーで構成されている匿名アカウントの資格情報が使用されます。

  • 基本。 : HTTP 接続で、プレーンテキストでユーザー名とパスワードを送信します。

  • ダイジェスト。 : HTTP 接続で、暗号化形式でパスワードを送信します。

  • Kerberos。 ユーザー名もパスワードも HTTP 接続で送信されません。 この認証の種類には、HTTP 送信アダプタが実行するプロセスの資格情報が使用されます。

    また、HTTP 送信アダプタでは、Web サーバーでクライアントの Secure Sockets Layer (SSL) 証明書を必要としているか受け付ける場合に、Web サーバーに SSL 証明書を提供できます。

HTTP 送信アダプタのクライアント証明書

HTTP 送信アダプタでは、クライアント証明書を受け付けるか必要とするサーバー間に、セキュリティで保護された接続を確立できます。 クライアント証明書を指定した場合、HTTP 送信アダプタではクライアント証明書を必要とするか受け付けるサーバーに接続するときに、この証明書を使用します。 クライアント証明書を指定しなかった場合に、送信先のサーバーでクライアント証明書を要求された場合、HTTP 送信アダプタはメッセージの送信に失敗し、標準の再試行ロジックが実行されます。

HTTP 送信アダプタでは、BizTalk Server プロセスの実行に使用されているアカウントの個人用ストアにあるクライアント証明書を使用します。 証明書は拇印によって指定します。 HTTP 送信アダプタによる証明書の読み込みが何らかの理由で失敗した場合、送信中だったメッセージは中断されます。

HTTP アダプタのシングル サインオンのサポート

BizTalk 管理コンソールを使用して、HTTP 受信場所または送信ポートで使用するエンタープライズ シングル サインオン (SSO) を構成できます。 ここでは、SSO と HTTP アダプタの連携について説明します。

HTTP 受信場所のシングル サインオンのサポート

Microsoft インターネット インフォメーション サービス (IIS) では、Web クライアントから HTTP 要求を受信すると、ユーザーを認証します。 ISAPI (Internet Server API) 拡張によって Microsoft Windows ユーザーの権限を借用し、SSO 資格情報ストアを呼び出して、暗号化されたチケットを取得します。 このチケットは、メッセージのコンテキストで SSOTicket プロパティとして格納されます。

パススルー シナリオでは、BizTalk メッセージング エンジンによって、メッセージ ボックス データベースにメッセージが送信されます。 アダプターが MessageBox データベースからメッセージを受信すると、HTTP アダプターは、暗号化されたチケットとアプリケーション名を使用して ISSOTicket.RedeemTicket メソッド を呼び出して、SSO ストアからバックエンド資格情報を取得します。 その後、外部の資格情報を使用してバックエンド システムに接続し、要求が処理されます。 関連アプリケーションの詳細については、「 SSO 関連アプリケーション」を参照してください。

オーケストレーションがアダプタを呼び出すシナリオでは、BizTalk メッセージング エンジンによって、メッセージ ボックス データベースにこのメッセージが送信されます。 オーケストレーションでは 、SSOTicket コンテキスト プロパティと、チケットを含むメッセージの Microsoft.BizTalk.XLANGs.BTXEngine.OriginatorSID コンテキスト プロパティの両方が維持されるようにする必要があります。 アダプターが MessageBox データベースからこのメッセージを受信すると、アダプターは暗号化されたチケットを使用して RedeemTicket を呼び出して、SSO ストアからバックエンド資格情報を取得します。 スケジュールをデザインするユーザーは、このプロパティをメッセージに明示的にコピーしてください。

HTTP 送信アダプタのシングル サインオンのポート

SSO が有効になっている場合、HTTP 送信ポートが Secure プロパティを含むメッセージを受信すると、SSO サーバーを呼び出して、関連アプリケーションのチケットを検証して引き換えます。 SSO を呼び出してチケットを引き換える作業は、関連アプリケーションのアプリケーション管理者、関連管理者、または SSO 管理者が行います。 その後、SSO によってチケットが解読され、バックエンド資格情報を取得します。 パススルーおよびオーケストレーションのシナリオは、HTTP 送信ポートのシナリオと同一です。

既定では HTTP 送信ポートの SSO は無効です。 HTTP 送信ポートの SSO を有効にする方法の詳細については、「HTTP 送信ポートの構成」を参照してください。

Note

シングル サインオンは、基本認証およびダイジェスト認証のみで使用できます。

HTTP 受信アダプタおよび送信アダプタのシングル サインオンのサポートを正しく実装するには、以下の条件を満たす必要があります。

  • 次の場所に、同一のユーザー アカウントを指定する必要があります。

    • HTTP 受信アダプターで監視している IIS 仮想ディレクトリの、アプリケーション プール ID (IIS 7.0) またはホスト元 COM+ アプリケーションの ID。 HTTP 受信場所用に IIS を構成する方法の詳細については、「HTTP 受信場所 用に IIS を構成する方法」を参照してください。

    • HTTP アダプターが実行されている分離ホスト インスタンスに使用されるログオン資格情報。 ホスト インスタンスのログオン資格情報を構成する方法については、「ホスト インスタンスの プロパティを変更する方法」を参照してください。

  • HTTP アダプタが使用する分離ホストは、信頼されている認証として構成する必要があります。 認証信頼済みとしてホストを構成する方法については、「ホスト のプロパティを変更する方法」を参照してください。

HTTP アダプタまたは SOAP アダプタによる送信が失敗した場合に生成される否定受信確認応答 (NACK) メッセージ

メッセージが正常に送信されると、配信通知が有効になっている場合、BizTalk メッセージング エンジンは関連する受信確認 (ACK) メッセージを MessageBox に発行します。 同様に、BizTalk メッセージング エンジンによってメッセージが中断されたり、オーケストレーション エンジンによってオーケストレーションが中断された場合、関連付けられた否定受信確認応答 (NACK) メッセージがパブリッシュされます。 NACK メッセージには、コンテキスト プロパティと、SOAP エラーで構成されるメッセージのボディ部が含まれます。 HTTP アダプタまたは SOAP アダプタからの送信に失敗したことが原因で NACK メッセージが生成された場合、SOAP エラーには、送信先の Web サーバーからの応答の Headers 要素および Body 要素が含まれます。 SOAP 送信が失敗した場合に生成される NACK の HTTP エラーの例を次に示します。

<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">  
   <SOAP:Body>  
      <SOAP:Fault>  
         <faultcode>Microsoft BizTalk Server Negative Acknowledgment</faultcode>   
         <faultstring>An error occurred while processing the message, refer to the details section for more information</faultstring>   
         <faultactor>http://localhost/receivestandard.asp</faultactor>   
         <detail>  
            <ns0:NACK Type="NACK" xmlns:ns0="http://schema.microsoft.com/BizTalk/2003/NACKMessage.xsd">  
            <NAckID>{4E646707-03AA-4493-95C7-A64B09E2987D}</NAckID>  
            <ErrorCode>0x80131600</ErrorCode>  
            <ErrorCategory>0</ErrorCategory>  
            <ErrorDescription>The remote server returned an error: (404) Not Found.</ErrorDescription>  
            <ErrorDetail>  
            <HttpErrorDetail xmlns="http://schema.microsoft.com/BizTalk/2006/HttpErrorDetails.xsd">  
               <Headers>Server: Microsoft-IIS/5.1 Date: Wed, 21 Apr 2005 00:27:47 GMT X-Powered-By: ASP.NET Connection: close Content-Type: text/html Content-Length: 67 </Headers>  
               <Body>We could not locate the page you requested. Please check the URL.</Body>  
            </HttpErrorDetail>  
            </ErrorDetail>  
            </ns0:NACK>  
         </detail>  
      </SOAP:Fault>  
   </SOAP:Body>  
</SOAP:Envelope>  

Note

Headers 要素および Body 要素は、48 KB に制限されています。 Headers 要素は、制限を超えないサイズで、最も完全に近いヘッダー値の組み合わせになるよう丸められます。 Body 要素は 48 KB に切り捨てられます。

Note

NACK メッセージと ACK メッセージは、それらのメッセージに一致するサブスクリプションがなければ破棄されます。 これらのメッセージが BizTalk メッセージング エンジンによって中断されることはありません。

NACK メッセージをサブスクライブするには、次のいずれかの操作を実行します。

  • 適切なメッセージ コンテキスト プロパティのフィルタを含む送信ポートを作成します。 メッセージ受信確認に関連するものを含むシステム メッセージ コンテキスト プロパティ の一覧については、 UI ガイダンスおよび開発者 API 名前空間リファレンス のメッセージ コンテキスト プロパティに関するページを参照してください。

  • 配信通知 = 送信済みとマークされたオーケストレーション ポートから送信します。 オーケストレーション ポートが 配信通知 = 送信済みとしてマークされている場合、オーケストレーションは送信されたメッセージの ACK または NACK を受信するまで待機します。 NACK が生成された場合、NACK はオーケストレーションにルーティングされ、オーケストレーションからは DeliveryFailureException がスローされます。 DeliveryFailureException は、NACK メッセージ本文に含まれている SOAP エラーからシリアル化解除されます。 オーケストレーションに返された SOAP エラーから例外メッセージ文字列を取得するには、DeliveryFailureException を SoapException にキャストし、SOAP の Detail セクションから InnerXml にアクセスします。 次のコード サンプルに、これを実行する方法を示します。

    // Cast the DeliveryFailureException to a SoapException…  
    System.Web.Services.Protocols.SoapException se = (System.Web.Services.Protocols.SoapException)e.InnerException;  
    System.Diagnostics.Trace.WriteLine(se.Detail.InnerXml);  
    //e is an Microsoft.XLANGs.BaseTypes.DeliveryFailureException  
    //object type created in an Exception handler  
    
    

    上記のコード例は、次のような XML フラグメントを返します。

    <ns0:NACK Type="NACK" xmlns:ns0="http://schema.microsoft.com/BizTalk/2003/NACKMessage.xsd">  
    <NAckID>{4E646707-03AA-4493-95C7-A64B09E2987D}</NAckID>  
    <ErrorCode>0x80131600</ErrorCode>  
    <ErrorCategory>0</ErrorCategory>  
    <ErrorDescription>The remote server returned an error: (404) Not Found.</ErrorDescription>  
    <ErrorDetail>  
    <HttpErrorDetail xmlns="http://schema.microsoft.com/BizTalk/2006/HttpErrorDetails.xsd">  
       <Headers>Server: Microsoft-IIS/5.1 Date: Wed, 21 Apr 2005 00:27:47 GMT X-Powered-By: ASP.NET Connection: close Content-Type: text/html Content-Length: 67 </Headers>  
       <Body>We could not locate the page you requested. Please check the URL.</Body>  
    </HttpErrorDetail>  
    </ErrorDetail>  
    </ns0:NACK>  
    

参照

HTTP アダプター
UI ガイダンスと開発者 API 名前空間リファレンスSSO COM オブジェクト