WCF-WSHttp 수신 위치 구성 방법
프로그래밍 방식으로 또는 BizTalk 관리 콘솔을 사용하여 WCF-WSHttp 수신 위치를 구성할 수 있습니다.
구성 속성
BizTalk 탐색기 개체 모델을 사용하면 수신 위치를 프로그래밍 방식으로 만들고 구성할 수 있습니다. BizTalk Explorer 개체 모델은 TransportTypeData 읽기/쓰기 속성이 있는IReceiveLocation 수신 위치 구성 인터페이스를 노출합니다. 이 속성은 XML 문자열의 이름/값 쌍 형식으로 이루어진 WCF-WSHttp 수신 위치 구성 속성 모음을 허용합니다. BizTalk Explorer 개체 모델에서 이 속성을 설정하려면 IReceiveLocation 인터페이스의 InboundTransportLocation 속성을 설정해야 합니다.
IReceiveLocation 인터페이스의 TransportTypeData 속성을 설정할 필요가 없습니다. 이 속성이 설정되지 않은 경우 WCF-WSHttp 어댑터는 다음 표와 같이 WCF-WSHttp 수신 위치 구성의 기본값을 사용합니다.
다음 표는 BizTalk 탐색기 개체 모델에서 WCF-WSHttp 수신 위치에 대해 설정할 수 있는 구성 속성을 보여 줍니다.
속성 이름 | Type | Description |
---|---|---|
ID | XML Blob 예제: <identity> <userPrincipalName value="username@contoso.com" /> </Id> |
이 수신 위치에서 제공하는 서비스의 ID를 지정합니다. IDENTITy 속성에 대해 지정할 수 있는 값은 보안 구성에 따라 다릅니다. 이러한 설정을 통해 클라이언트가 이 수신 위치를 인증할 수 있습니다. 클라이언트와 서비스 간의 핸드셰이크 프로세스에서 WCF(Windows Communication Foundation) 인프라는 예상되는 서비스의 ID가 이 요소의 값과 일치하는지 확인합니다. 기본값은 빈 문자열입니다. |
OpenTimeout | System.TimeSpan | 채널 열기 작업이 완료될 수 있도록 제공되는 시간 간격을 나타내는 시간 범위 값을 지정합니다. 기본값: 00:01:00 |
SendTimeout | System.TimeSpan | 송신 작업이 완료될 수 있도록 제공되는 시간 간격을 나타내는 시간 범위 값을 지정합니다. 요청-응답 수신 포트를 사용하는 경우 이 값은 클라이언트가 큰 메시지를 반환하더라도 전체 상호 작용이 완료될 수 있는 시간 범위를 지정합니다. 기본값: 00:01:00 |
CloseTimeout | System.TimeSpan | 채널 닫기 작업이 완료될 수 있도록 제공되는 시간 간격을 나타내는 시간 범위 값을 지정합니다. 기본값: 00:01:00 |
MaxReceivedMessageSize | 정수 | 유선으로 수신할 수 있는 메시지의 최대 크기(헤더 포함)를 바이트 단위로 지정합니다. 메시지 크기는 각 메시지에 할당된 메모리 용량으로 제한됩니다. 이 속성을 사용하여 Dos(서비스 거부) 공격에 노출될 가능성을 줄일 수 있습니다. 기본값: 65536 |
MessageEncoding | 열거형 - 텍스트 - 문자 메시지 인코더를 사용합니다. - Mtom - 메시지 전송 최적화 메커니즘 1.0(MTOM) 인코더를 사용합니다. |
SOAP 메시지를 인코딩하는 데 사용되는 인코더를 지정합니다. 기본값: 텍스트 |
TextEncoding | 열거형 - unicodeFFF - 유니코드 BigEndian 인코딩. - utf-16 - 16비트 인코딩. - utf-8 - 8비트 인코딩 |
MessageEncoding 속성이 Text로 설정된 경우 바인딩에서 메시지를 내보내는 데 사용할 문자 집합 인 코딩을 지정 합니다. 기본값: utf-8 |
EnableTransaction | 부울 | 메시지가 클라이언트에서 전달된 트랜잭션을 사용하여 MessageBox 데이터베이스에 전송되는지 여부를 지정합니다. 이 속성이 인 True 경우 클라이언트는 WS-AtomicTransaction 프로토콜을 사용하여 메시지를 제출해야 합니다. 클라이언트가 트랜잭션 범위 밖에서 메시지를 전송하면 이 수신 위치는 클라이언트에게 예외를 반환하며 메시지는 일시 중단되지 않습니다.이 옵션은 단방향 수신 위치에만 사용할 수 있습니다. 클라이언트가 요청-응답 수신 위치에 대해 트랜잭션 컨텍스트에서 메시지를 전송하면 클라이언트에게 예외가 반환되며 메시지는 일시 중단되지 않습니다. 기본값: False |
MaxConcurrentCalls | 정수 | 단일 서비스 인스턴스에 대한 동시 호출 수를 지정합니다. 한도를 초과하는 호출은 대기됩니다. 이 속성의 범위는 1에서 Int32.MaxValue 사이입니다. 기본값: 200 |
SecurityMode | 열거형 - 없음 - 메시지 - 전송 - TransportWithMessageCredential SecurityMode 속성의 멤버 이름에 대한 자세한 내용은 UI 지침 및 개발자 API 네임스페이스 참조의 WCF-WSHttp 전송 속성 대화 상자, 수신, 보안 탭의 보안 모드 속성을 참조하세요. |
사용할 보안 유형을 지정합니다. 기본값: 메시지 |
TransportClientCredentialType | 열거형 - 없음 - 기본 - Ntlm - Windows - 인증서 TransportClientCredentialType 속성의 멤버 이름에 대한 자세한 내용은 UI 지침 및 개발자 API 네임스페이스 참조의 WCF-WSHttp 전송 속성 대화 상자, 수신, 보안 탭의 전송 클라이언트 자격 증명 형식 속성을 참조하세요. |
클라이언트 인증 수행에 사용할 자격 증명 유형을 지정합니다. 기본값: Windows |
MessageClientCredentialType | 열거형 - 없음 - Windows - 사용자 - 인증서 MessageClientCredentialType 속성의 멤버 이름에 대한 자세한 내용은 UI 지침 및 개발자 API 네임스페이스 참조의 WCF-WSHttp 전송 속성 대화 상자, 수신, 보안 탭의 메시지 클라이언트 자격 증명 형식 속성을 참조하세요. |
메시지 기반 보안을 사용하여 클라이언트 인증 수행에 사용할 자격 증명 유형을 지정합니다. 기본값: Windows |
AlgorithmSuite | 열거형 AlgorithmSuite 속성의 멤버 이름에 대한 자세한 내용은 UI 지침 및 개발자 API 네임스페이스 참조의 WCF-WSHttp 전송 속성 대화 상자, 수신, 보안 탭의 Algorithm suite 속성을 참조하세요. |
메시지 암호화 및 키 랩 알고리즘을 지정합니다. 이러한 알고리즘은 보안 정책 언어(WS-SecurityPolicy) 사양에 지정된 알고리즘에 매핑됩니다. 기본값: Basic256 |
NegotiateServiceCredential | 부울 | 대역 외 클라이언트에서 서비스 자격 증명을 제공하거나 협상 프로세스를 통해 서비스에서 클라이언트로 서비스 자격 증명을 가져올 수 있는지 여부를 지정합니다. 그러한 협상은 일반적인 메시지 교환에 앞서 수행됩니다. MessageClientCredentialType 속성이 None, Username 또는 Certificate와 같으면 이 속성을 False로 설정하면 대역 외 클라이언트에서 서비스 인증서를 사용할 수 있으며 클라이언트가 서비스 인증서를 지정해야 합니다. 이 모드는 WS-Trust 및 WS-SecureConversation을 구현하는 SOAP 스택과 상호 운용할 수 있습니다. MessageClientCredentialType 속성이 Windows로 설정된 경우 이 속성을 False로 설정하면 Kerberos 기반 인증이 지정됩니다. 이것은 클라이언트와 서비스가 동일한 Kerberos 도메인에 속해야 함을 의미합니다. 이 모드는 Kerberos 토큰 프로필(OASIS WSS TC에서 정의) 그리고 WS-Trust 및 WS-SecureConversation을 구현하는 SOAP 스택과 상호 운용할 수 있습니다. 이 속성이 True이면 SOAP 메시지를 통해 SPNego 교환을 터널하는 .NET SOAP 협상이 발생합니다. 기본값: True |
EstablishSecurityContext | 부울 | 보안 채널에서 보안 세션을 설정할지 여부를 지정합니다. 보안 세션은 애플리케이션 메시지를 교환하기 전에 SCT(보안 컨텍스트 토큰)를 설정합니다. 기본값: True |
ServiceCertificate | String | 클라이언트가 서비스 인증에 사용하는 이 수신 위치에 대한 X.509 인증서의 손 도장(Thumbprint)을 지정합니다. 이 속성에 사용할 인증서는 현재 사용자 위치의 내 저장소에 설치해야 합니다. 참고: 이 수신 위치를 호스팅하는 수신 처리기에 대한 사용자 계정의 현재 사용자 위치에 서비스 인증서를 설치해야 합니다. 기본값은 빈 문자열입니다. |
UseSSO | 부울 | SSO(Single Sign-On) 티켓을 발급하기 위해 클라이언트 자격 증명을 검색할 때 Enterprise SSO를 사용할지 여부에 대해서 지정합니다. SSO를 지원하는 보안 구성에 대한 자세한 내용은 UI 지침 및 개발자 API 네임스페이스 참조의 WCF-WSHttp 전송 속성 대화 상자, 수신, 보안 탭의 "WCF-WSHttp 수신 어댑터에 대한 엔터프라이즈 단일 Sign-On 지원 가능성" 섹션을 참조하세요. |
InboundBodyLocation | 열거형 - UseBodyElement - 들어오는 메시지의 SOAP 본문 요소 콘텐츠를 사용하여 BizTalk 메시지 본문 부분을 만듭니다. Body 요소에 둘 이상의 자식 요소가 있는 경우 첫 번째 요소만 BizTalk 메시지 본문 부분이 됩니다. - UseEnvelope - 들어오는 메시지의 전체 SOAP 봉투 에서 BizTalk 메시지 본문 부분을 만듭니다. - UseBodyPath - InboundBodyPathExpression 속성의 본문 경로 식을 사용하여 BizTalk 메시지 본문 부분을 만듭니다. 본문 경로 식은 들어오는 메시지의 SOAP Body 요소에 대한 직동 자식 요소에 대해 평가됩니다. 이 속성은 간청-응답 포트에 대해서만 유효합니다. InboundBodyLocation 속성을 사용하는 방법에 대한 자세한 내용은 WCF 어댑터에 대한 메시지 본문 지정을 참조하세요. |
들어오는 WCF 메시지의 SOAP Body 요소에 대한 데이터 선택을 지정합니다. 기본값: UseBodyElement |
InboundBodyPathExpression | 문자열 InboundBodyPathExpression 속성을 사용하는 방법에 대한 자세한 내용은 WCF 어댑터 속성 스키마 및 속성을 참조하세요. |
본문 경로 식을 지정하여 BizTalk 메시지 본문을 만드는 데 사용되는 들어오는 메시지의 특정 파트를 식별합니다. 이 본문 경로 식은 들어오는 메시지의 SOAP 본문 노드의 직할 자식 요소에 대해 평가됩니다. 이 본문 경로 식이 둘 이상의 노드를 반환하는 경우 첫 번째 노드만 BizTalk 메시지 본문에 선택됩니다. InboundBodyLocation 속성이 UseBodyPath로 설정된 경우 이 속성이 필요합니다. 기본값은 빈 문자열입니다. |
InboundNodeEncoding | 열거형 - Base64 - Base64 인코딩. - 16진수 - 16진수 인코딩. - 문자열 - 텍스트 인코딩 - UTF-8. - XML - WCF 어댑터는 InboundBodyPathExpression의 본문 경로 식에서 선택한 노드의 외부 XML을 사용하여 BizTalk 메시지 본문을 만듭니다. |
WCF-WSHttp 수신 어댑터가 InboundBodyPathExpression에 지정된 본문 경로 식으로 식별된 노드를 디코딩하는 데 사용하는 인코딩 유형을 지정합니다. InboundBodyLocation 속성이 UseBodyPath로 설정된 경우 이 속성이 필요합니다. 기본값: XML |
OutboundBodyLocation | 열거형 - UseBodyElement - BizTalk 메시지 본문 부분을 사용하여 보내는 응답 메시지에 대한 SOAP Body 요소의 콘텐츠를 만듭니다. - UseTemplate - OutboundXMLTemplate 속성에 제공된 템플릿을 사용하여 보내는 응답 메시지에 대한 SOAP Body 요소의 콘텐츠를 만듭니다. OutboundBodyLocation 속성을 사용하는 방법에 대한 자세한 내용은 WCF 어댑터에 대한 메시지 본문 지정을 참조하세요. |
나가는 WCF 메시지의 SOAP 본문 요소에 대한 데이터 선택을 지정합니다. 이 속성은 요청-응답 수신 위치에만 유효합니다. 기본값: UseBodyElement |
OutboundXMLTemplate | 문자열 OutboundXMLTemplate 속성을 사용하는 방법에 대한 자세한 내용은 WCF 어댑터에 대한 메시지 본문 지정을 참조하세요. |
보내는 응답 메시지의 SOAP 본문 요소 콘텐츠에 대한 XML 형식 템플릿을 지정합니다. OutboundBodyLocation 속성이 UseTemplate으로 설정된 경우 이 속성이 필요합니다. 이 속성은 요청-응답 수신 위치에만 유효합니다. 기본값은 빈 문자열입니다. |
SuspendMessageOnFailure | 부울 | 수신 파이프라인 오류 또는 라우팅 오류로 인해 인바운드 처리되지 못한 요청 메시지를 일시 중단할지 여부를 지정합니다. 기본값: True |
IncludeExceptionDetailInFaults | 부울 | 디버깅용으로 클라이언트에게 반환되는 SOAP 오류 정보에 관리되는 예외 정보를 포함할지 여부에 대해서 지정합니다. 기본값: False |
BizTalk 관리 콘솔을 사용하여 WCF-WSHttp 수신 위치 구성
BizTalk 관리 콘솔에서 WCF-WSHttp 수신 위치 어댑터 변수를 설정할 수 있습니다. 수신 위치에서 속성을 설정하지 않으면 BizTalk 관리 콘솔에 설정된 기본 수신 핸들러 값이 사용됩니다.
참고
다음 절차를 완료하기 전에 수신 포트를 이미 추가한 상태여야 합니다. 자세한 내용은 수신 포트를 만드는 방법을 참조하세요.
WCF-WSHttp 수신 위치에 대한 변수 구성
BizTalk 관리 콘솔에서 BizTalk Server 관리, BizTalk 그룹, 애플리케이션을 차례로 확장한 다음 수신 위치를 만들려는 애플리케이션을 확장합니다.
BizTalk 관리 콘솔의 왼쪽 창에서 수신 포트 노드를 클릭합니다. 그런 다음 오른쪽 창에서 기존 수신 위치와 연결되어 있거나 새 수신 위치와 연결하려는 수신 포트를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.
수신 포트 속성 대화 상자의 왼쪽 창에서 수신 위치를 선택한 다음 오른쪽 창에서 기존 수신 위치를 두 번 클릭하거나 새로만들기를 클릭하여 새 수신 위치를 만듭니다.
수신 위치 속성 대화 상자의 형식 옆의 전송 섹션에서 드롭다운 목록에서 WCF-WSHttp를 선택한 다음 구성을 클릭합니다.
WCF-WSHttp 전송 속성 대화 상자의 일반 탭에서 WCF-WSHttp 수신 위치에 대한 엔드포인트 주소 및 서비스 ID를 구성합니다. WCF-WSHttp 전송 속성 대화 상자의 일반 탭에 대한 자세한 내용은 UI 지침 및 개발자 API 네임스페이스 참조에서 WCF-WSHttp 전송 속성 대화 상자, 수신, 일반 탭을 참조하세요.
WCF-WSHttp 전송 속성 대화 상자의 바인딩 탭에서 제한 시간, 인코딩 및 트랜잭션 속성을 구성합니다. WCF-WSHttp 전송 속성 대화 상자의 바인딩 탭에 대한 자세한 내용은 UI 지침 및 개발자 API 네임스페이스 참조에서 WCF-WSHttp 전송 속성 대화 상자, 수신, 바인딩 탭을 참조하세요.
WCF-WSHttp 전송 속성 대화 상자의 보안 탭에서 WCF-WSHttp 수신 위치의 보안 기능을 정의합니다. WCF-WSHttp 전송 속성 대화 상자의 보안 탭에 대한 자세한 내용은 UI 지침 및 개발자 API 네임스페이스 참조에서 WCF-WSHttp 전송 속성 대화 상자, 수신, 보안 탭을 참조하세요.
WCF-WSHttp 전송 속성 대화 상자의 메시지 탭에서 SOAP 본문 요소에 대한 데이터 선택을 지정합니다. WCF-WSHttp 전송 속성 대화 상자의 메시지 탭에 대한 자세한 내용은 UI 지침 및 개발자 API 네임스페이스 참조에서 WCF-WSHttp 전송 속성 대화 상자, 수신, 메시지 탭을 참조하세요.
프로그래밍 방식으로 WCF-WSHttp 수신 위치 구성
다음 형식을 사용하여 속성을 설정할 수 있습니다.
<CustomProps>
<InboundBodyPathExpression vt="8" />
<InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
<UseSSO vt="11">0</UseSSO>
<MessageClientCredentialType vt="8">Windows</MessageClientCredentialType>
<SendTimeout vt="8">00:01:00</SendTimeout>
<OutboundXmlTemplate vt="8"><bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="xml"/></OutboundXmlTemplate>
<OpenTimeout vt="8">00:01:00</OpenTimeout>
<AlgorithmSuite vt="8">Basic256</AlgorithmSuite>
<SecurityMode vt="8">Message</SecurityMode>
<TransportClientCredentialType vt="8">Windows</TransportClientCredentialType>
<NegotiateServiceCredential vt="11">-1</NegotiateServiceCredential>
<MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
<TextEncoding vt="8">utf-8</TextEncoding>
<CloseTimeout vt="8">00:01:00</CloseTimeout>
<SuspendMessageOnFailure vt="11">0</SuspendMessageOnFailure>
<EnableTransaction vt="11">0</EnableTransaction>
<InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
<EstablishSecurityContext vt="11">-1</EstablishSecurityContext>
<IncludeExceptionDetailInFaults vt="11">0</IncludeExceptionDetailInFaults>
<MaxConcurrentCalls vt="3">16</MaxConcurrentCalls>
<ServiceCertificate vt="8" />
<MessageEncoding vt="8">Text</MessageEncoding>
<OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
</CustomProps>
다음 코드 조각은 WCF-WSHttp 수신 위치를 만드는 방법을 보여 줍니다.
// Use BizTalk Explorer object model to create new WCF-WSHttp receive location
string server = System.Environment.MachineName;
string database = "BizTalkMgmtDb";
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);
string transportConfigData = @"<CustomProps>
<InboundBodyLocation vt=""8"">UseBodyElement</InboundBodyLocation>
<UseSSO vt=""11"">0</UseSSO>
<Identity vt=""8"">
<identity>
<userPrincipalName value=""username@contoso.com"" />
</identity>
</Identity>
</CustomProps>";
//requires project reference to \Program Files\Microsoft BizTalk Server 2009\Developer Tools\Microsoft.BizTalk.ExplorerOM.dll
BtsCatalogExplorer explorer = new Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer();
explorer.ConnectionString = connectionString;
// Add a new BizTalk application
Application application = explorer.AddNewApplication();
application.Name = "SampleBizTalkApplication1001";
// Save
explorer.SaveChanges();
// Add a new one-way receive port
IReceivePort receivePort = application.AddNewReceivePort(false);
receivePort.Name = "SampleReceivePort";
// Add a new one-way receive location
IReceiveLocation receiveLocation = receivePort.AddNewReceiveLocation();
receiveLocation.Name = "SampleReceiveLocation";
// Find a receive handler for WCF-WSHttp
int i = 0;
for(i=0; i < explorer.ReceiveHandlers.Count; ++i)
{
if("WCF-WSHttp" == explorer.ReceiveHandlers[i].TransportType.Name)
break;
}
receiveLocation.ReceiveHandler = explorer.ReceiveHandlers[i];
receiveLocation.Address = "/samplepath/sampleservice.svc";
receiveLocation.ReceivePipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruReceive"];
receiveLocation.TransportType = explorer.ProtocolTypes["WCF-WSHttp"];
receiveLocation.TransportTypeData = transportConfigData;
// Save
explorer.SaveChanges();
참고 항목
Isolated WCF 수신 어댑터를 사용하여 WCF 서비스 게시
Isolated WCF 수신 어댑터에 대한 IIS 구성
BizTalk 호스트 및 호스트 인스턴스 관리
서비스 계정 및 암호 변경 방법
WCF 어댑터에 대한 인증서 설치
WCF 어댑터에 대한 메시지 본문 지정
WCF-WSHttp 어댑터 구성