Share via


HTTP 송신 어댑터

HTTP 송신 어댑터는 BizTalk Server 메시지를 가져오고 HTTP POST 요청의 대상 URL로 보냅니다. 이때 HTTP 송신 어댑터는 BizTalk Message 개체의 본문에서 메시지 내용을 가져오며 다른 모든 BizTalk Message 개체 부분은 무시합니다.

어댑터가 메시지를 대상 URL로 보내고 BizTalk 메시징 엔진이 HTTP 성공 상태 코드를 받고 나면 HTTP 송신 어댑터는 MessageBox 데이터베이스에서 메시지를 삭제합니다.

HTTP 메시지 리디렉션이 지원되며 송신 포트에서 구성할 수 있습니다.

BizTalk Server HTTP 송신 어댑터를 네이티브 BizTalk 애플리케이션으로 호스트합니다. 단방향 메시지 송신과 간청-응답 전송을 모두 지원합니다. HTTP 송신 어댑터의 송신 위치는 송신 포트를 통해 구성하는 고유 URL입니다. 이 고유 URL에는 기준 URL에 쿼리 문자열을 추가할 수 있습니다.

HTTP 송신 어댑터에 대한 일괄 처리 지원

HTTP 송신 어댑터는 일괄 처리 작업을 지원하지 않습니다.

HTTP 송신 어댑터에 대한 청크 분할 인코딩 지원

청크 인코딩 구성 사용 옵션을 사용하는 경우 HTTP 송신 어댑터는 요청 크기가 8KB를 초과하는 경우 청크 인코딩을 사용하여 요청 메시지를 보냅니다. HTTP 프록시 서버를 사용하는 경우 HTTP 송신 어댑터는 청크 분할된 인코딩을 사용하지 않으며 데이터를 보내기 전에 항상 스테이징합니다. 청크 인코딩 구성 사용 옵션은 기본적으로 사용하도록 설정됩니다.

송신 어댑터는 응답 메시지를 받을 때 청크 분할된 인코딩이 적용된 본문을 포함하는 응답 메시지를 허용할 수 있습니다.

HTTP 송신 어댑터의 클라이언트 인증

HTTP 송신 어댑터는 다음의 인증 유형 중 하나를 사용하여 대상 서버를 인증합니다.

  • 익명 HTTP 어댑터는 대상 서버에 연결할 때 자격 증명을 보내지 않습니다. 대상 서버에서 익명 인증을 허용하는 경우에는 대상 서버에 구성된 익명 계정의 자격 증명이 사용됩니다.

  • 기본. HTTP 어댑터가 HTTP 연결을 통해 사용자 이름과 암호를 일반 텍스트로 보냅니다.

  • 다이제스트. HTTP 어댑터가 HTTP 연결을 통해 암호를 암호화된 형식으로 보냅니다.

  • Kerberos. HTTP 연결을 통해 사용자 이름이나 암호를 보내지 않습니다. HTTP 어댑터는 HTTP 송신 어댑터가 이 인증 유형에 대해 실행될 때 사용하는 프로세스의 자격 증명을 사용합니다.

    또한 HTTP 송신 어댑터는 서버에서 요구하거나 허용하는 경우 클라이언트 SSL(Secure Sockets Layer) 인증서를 웹 서버에 제공할 수 있습니다.

HTTP 송신 어댑터의 클라이언트 인증서

HTTP 송신 어댑터는 클라이언트 인증서를 허용하거나 요구하는 서버에 대한 보안 연결을 설정할 수 있습니다. 클라이언트 인증서를 지정하는 경우 HTTP 송신 어댑터는 클라이언트 인증서를 요구하거나 허용하는 서버에 연결할 때 해당 인증서를 사용합니다. 클라이언트 인증서를 지정하지 않는 경우 대상 서버에서 클라이언트 인증서를 요구하면 HTTP 송신 어댑터가 메시지를 보내지 못하며 표준 재시도 논리를 따릅니다.

HTTP 송신 어댑터는 BizTalk Server 프로세스가 실행 중인 계정의 개인 저장소에서 클라이언트 인증서를 사용합니다. 이 인증서는 해당 손 도장(Thumbprint)을 통해 지정됩니다. HTTP 송신 어댑터가 어떠한 이유로든 인증서를 로드하지 못하면 어댑터에서 보내고 있던 메시지가 일시 중단됩니다.

HTTP 어댑터에 대한 Single Sign-On 지원

BizTalk 관리 콘솔을 사용하여 Enterprise SSO(Single Sign-On)를 HTTP 수신 위치 또는 송신 포트에서 사용할 수 있도록 구성할 수 있습니다. 이 항목에서는 HTTP 어댑터를 사용하여 SSO를 작동하는 방법에 대해 설명합니다.

HTTP 수신 위치에 대한 Single Sign-On 지원

Microsoft IIS(인터넷 정보 서비스)는 웹 클라이언트로부터 HTTP 요청을 받으면 사용자를 인증합니다. ISAPI(인터넷 서버 응용 프로그래밍 인터페이스) 확장은 Microsoft Windows 사용자를 가장하여 SSO 자격 증명 저장소를 호출해 암호화된 티켓을 가져옵니다. 이 티켓은 메시지 컨텍스트에서 SSOTicket 속성으로 저장됩니다.

통과 시나리오에서 BizTalk 메시징 엔진은 메시지를 MessageBox 데이터베이스로 전달합니다. 어댑터가 MessageBox 데이터베이스에서 메시지를 받으면 HTTP 어댑터는 애플리케이션 이름과 함께 암호화된 티켓으로 ISSOTicket.RedeemTicket 메서드 를 호출하여 SSO 저장소에서 백 엔드 자격 증명을 검색합니다. 그런 다음 HTTP 어댑터는 외부 자격 증명을 사용하여 백 엔드 시스템에 연결하고 요청을 처리합니다. 관련 애플리케이션에 대한 자세한 내용은 SSO 관련 애플리케이션을 참조하세요.

오케스트레이션이 어댑터를 호출하는 시나리오에서 BizTalk 메시징 엔진은 이 메시지를 MessageBox 데이터베이스로 보냅니다. 오케스트레이션은 티켓이 포함된 메시지의 SSOTicket 컨텍스트 속성과 Microsoft.BizTalk.XLANGs.BTXEngine.OriginatorSID 컨텍스트 속성이 모두 유지되도록 해야 합니다. 어댑터가 MessageBox 데이터베이스에서 이 메시지를 받으면 어댑터는 암호화된 티켓으로 RedeemTicket 를 호출하여 SSO 저장소에서 백 엔드 자격 증명을 검색합니다. 일정을 디자인하는 사용자는 특별히 이 속성을 메시지에 복사해야 합니다.

HTTP 송신 어댑터에 대한 Single Sign-On 지원

SSO가 사용하도록 설정된 경우 HTTP 송신 포트가 Secure 속성이 포함된 메시지를 받으면 SSO 서버를 호출하여 관련 애플리케이션에 대한 티켓의 유효성을 검사하고 사용합니다. 관리 응용 프로그램, 관련 관리자 또는 관련 응용 프로그램의 SSO 관리자는 SSO를 호출하여 티켓을 교환할 수 있습니다. 그런 다음 SSO는 티켓의 암호를 해독하고 백 엔드 자격 증명을 가져옵니다. HTTP 송신 포트의 경우 통과 시나리오와 오케스트레이션 시나리오가 동일합니다.

SSO는 기본적으로 HTTP 송신 포트에 대해 사용하지 않도록 설정됩니다. HTTP 송신 포트에 대해 SSO를 사용하도록 설정하는 방법에 대한 자세한 내용은 HTTP 송신 포트 구성을 참조하세요.

참고

기본 인증 및 다이제스트 인증에 대해서만 Single Sign-On을 사용할 수 있습니다.

HTTP 수신 및 송신 어댑터에 대해 Single Sign-On 지원을 올바르게 구현하려면 다음 조건이 만족되어야 합니다.

HTTP 또는 SOAP 어댑터에서 실패한 전송에 대해 생성되는 NACK(부정 승인) 메시지

배달 알림이 사용하도록 설정된 경우 메시지가 성공적으로 전송되면 BizTalk 메시징 엔진은 연관된 ACK(승인) 메시지를 MessageBox에 게시합니다. 마찬가지로 BizTalk 메시징 엔진에서 메시지를 일시 중단하거나 오케스트레이션 엔진에서 오케스트레이션을 일시 중단하면 BizTalk Server 연결된 NACK(부정 승인) 메시지를 MessageBox에 게시합니다. NACK 메시지에는 컨텍스트 속성과 SOAP 오류로 구성된 메시지 본문이 포함됩니다. HTTP 또는 SOAP 어댑터에서 전송이 실패하여 NACK 메시지가 생성되는 경우 SOAP 오류에는 대상 웹 서버에서 보내는 응답의 Headers 요소 및 Body 요소가 포함됩니다. 다음은 실패한 HTTP 전송에 대해 생성되는 NACK에 포함된 SOAP 오류의 예입니다.

<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>  

참고

Headers 요소와 Body 요소는 48KB로 제한됩니다. Headers 요소는 제한을 초과하지 않으면서 가장 가까운 전체 헤더 값 쌍으로 반올림되고, Body 요소는 48KB로 잘립니다.

참고

NACK 및 ACK 메시지는 일치하는 등록이 없는 경우 삭제되며, BizTalk 메시징 엔진에 의해 일시 중단되지 않습니다.

NACK 메시지에 등록하려면 다음 중 하나를 수행하면 됩니다.

  • 해당하는 메시지 컨텍스트 속성용 필터를 포함하는 송신 포트를 만듭니다. 메시지 승인과 관련된 시스템 메시지 컨텍스트 속성 목록은 UI 지침 및 개발자 API 네임스페이스 참조 의 메시지 컨텍스트 속성을 참조하세요.

  • 배달 알림 = 전송됨으로 표시된 오케스트레이션 포트에서 보냅니다. 오케스트레이션 포트가 배달 알림 = 전송됨으로 표시된 경우 오케스트레이션은 전송된 메시지에 대해 ACK 또는 NACK를 받을 때까지 기다립니다. NACK이 생성되는 경우에는 오케스트레이션으로 라우팅되며 오케스트레이션은 DeliveryFailureException을 throw합니다. DeliveryFailureException은 NACK 메시지 본문 내에 포함된 SOAP 오류에서 deserialize됩니다. 오케스트레이션으로 반환되는 SOAP 오류에서 예외 메시지 문자열을 검색하려면 DeliveryFailureException을 SoapException으로 캐스팅한 다음 SOAP 정보 섹션에서 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 개체