연습: WCF-NetTcp 어댑터를 통해 메시지 보안 모드 사용
참고
어댑터에 대한 자세한 내용은 BizTalk Server 어댑터를 참조하세요.
소개
이 연습에서는 WS-Security 사양을 사용하여 어댑터가 전송하는 메시지를 보호하는 데 도움이 되는 WCF(Windows Communication Foundation) 메시지 보안 모드를 사용하도록 WCF-NetTcp 어댑터를 구성하는 방법을 보여 줍니다. 이 사양은 SOAP 메시지 수준에서 기밀성, 무결성 및 인증을 보장하기 위한 SOAP 메시징 프로토콜의 향상 기능에 대해 설명합니다. 메시지 보안 모드에서는 보안 모드 조합에 따라 암호화/암호 해독 및 서명/확인 등의 작업용으로 서비스 인증서를 지정해야 합니다.
WCF-NetTcp 어댑터는 NetTcpBinding 바인딩을 사용하여 WCF 클라이언트와 WCF 원격 서비스 간에 통신합니다. SOAP 보안, 안정성 및 트랜잭션 기능에 대한 모든 권한을 제공합니다. 따라서 오케스트레이션 및 스키마를 WCF 서비스로 게시할 수 있으며 오케스트레이션에서 외부 WCF 서비스를 사용할 수 있는 기능도 제공합니다. 이 어댑터는 TCP 전송을 사용하고 메시지는 이진 인코딩을 포함합니다. WCF-NetTcp 어댑터는 송신 어댑터와 수신 어댑터로 구성됩니다.
이 연습에서는 Active Directory Certificate 서비스를 사용하여 메시지 보안 모드용 인증서를 만드는 방법에 대해 설명합니다. 서버와 클라이언트에 대한 인증서를 만든 다음 메시지 보안 모드에서 인증서를 사용하도록 WCF-NetTcp 수신 위치를 구성합니다. WCF 클라이언트를 사용하면 XML 암호화 구문 및 처리에 따라 암호화된 상태의 수신 위치에 메시지를 보냅니다.
이 연습을 완료하면 다음 작업을 수행하는 방법을 알 수 있습니다.
Active Directory Certificate 서비스를 사용하여 인증서 요청을 만들고 인증서를 발급하여 프로세스 완료
BizTalk Server 관리 콘솔에서 메시지 보안 모드를 사용하도록 WCF-NetTcp 어댑터를 구성합니다.
필수 구성 요소
이 샘플의 단계를 수행하려면 환경에서 다음 필수 구성 요소를 설치해야 합니다.
어셈블리를 빌드하고 배포 프로세스를 실행하는 컴퓨터와 샘플을 실행하는 컴퓨터 모두 Microsoft Windows Server 2008 SP2, Microsoft .NET Framework 4.5 및 Microsoft BizTalk Server 필요합니다.
어셈블리를 빌드하고 배포 프로세스를 실행하는 컴퓨터에는 Microsoft Visual Studio가 필요합니다.
샘플을 실행하는 컴퓨터에는 WCF 어댑터 및 WCF 관리 도구가 필요합니다. 다음은 Microsoft BizTalk Server 설치하는 동안 설치할 수 있는 옵션입니다.
관리 작업을 수행하는 데 사용하는 컴퓨터에서 BizTalk Server 관리 콘솔 내에서 BizTalk Server 애플리케이션 설정을 구성하려면 BizTalk Server Administrators 그룹의 구성원인 사용자 계정으로 실행해야 합니다. 또한 이 사용자 계정은 응용 프로그램 배포, 호스트 인스턴스 관리 및 기타 필요한 작업에 대한 로컬 관리자 그룹의 멤버여야 합니다.
WCF 기능이 필요한 컴퓨터에서 에서 https://go.microsoft.com/fwlink/?LinkId=135510WCF 샘플에 대한 일회성 설정 절차를 완료합니다.
샘플을 실행하고 바인딩 또는 .msi 파일을 BizTalk Server 가져오는 컴퓨터에서 호스트가 신뢰할 수 있는 호스트가 아니거나 가져오기가 실패하는지 확인합니다.
샘플을 실행하는 컴퓨터에서 Active Directory Certificate 서비스가 설치되어 있는지 확인합니다.
연습 코드를 다운로드하여 컴퓨터에 추출해야 합니다. 이 연습은 전체 WCF 어댑터 연습 패키지의 일부입니다. 의 BizTalk Server 개발자 센터에서 https://go.microsoft.com/fwlink/?LinkId=194140파일WCFAdapterWalkthroughs.exe다운로드할 수 있습니다.
이 연습에 대한 인증서 만들기
이 섹션에서는 서비스 및 클라이언트 인증서를 요청하고 인증서를 발급한 다음 해당하는 저장소에 설치합니다. Active Directory Certificate 서비스를 사용하여 신뢰할 수 있는 인증서 체인을 통해 인증서를 만듭니다. Active Directory Certificate 서비스를 필수 구성 요소의 일부분으로 설치하지 않은 경우에는 컴퓨터에 Active Directory Certificate 서비스를 설치하고, 서비스를 이미 설치한 경우에는 2단계로 이동합니다.
시작을 클릭하고 관리 도구를 가리킨 다음 서버 관리자를 클릭합니다.
서버 관리자 노드에서 추가를 클릭한 다음 역할을 클릭합니다.
그러면 역할 추가 마법사에 대한 시작하기 전에 대화 상자가 표시됩니다. 다음을 클릭합니다.
서버 역할 선택 페이지에서 Active Directory 인증서 서비스를 선택하고 다음을 클릭한 다음 화면의 지침에 따라 설치를 완료합니다.
서비스 인증을 위한 인증서 요청을 다음과 같이 만듭니다.
인터넷 Explorer 웹 사이트를 방문합니다
http://localhost/certsrv
. 시작 페이지에서 인증서 요청을 클릭한 다음 인증서 요청 페이지에서 고급 인증서 요청을 클릭합니다.참고
Windows Server 2008 SP2를 인증 기관으로 사용하고 Windows Server 2008 SP2 컴퓨터에서 인증서 요청을 요청하는 경우 "인증서 등록을 완료하려면 CA 웹 사이트를 HTTPS 인증을 사용하도록 구성해야 합니다." 오류가 발생할 수 있습니다. 이 오류가 발생하면 등록 웹 사이트를 SSL(웹 인증서)으로 구성해야 합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 다음 링크를 참조하십시오.
고급 인증서 요청 페이지에서 만들기를 클릭하고 이 CA에 요청을 제출합니다.
고급 인증서 요청 페이지의 이름 텍스트 상자에 를 입력
localhost
하고 필요한 인증서 유형 드롭다운 목록에서 서버 인증 인증서를 선택한 다음 제출을 클릭합니다.
클라이언트 인증을 위한 인증서 요청을 다음과 같이 만듭니다.
인터넷 Explorer 웹 사이트를 방문합니다
http://localhost/certsrv
. 시작 페이지에서 인증서 요청을 클릭한 다음 인증서 요청 페이지에서 고급 인증서 요청을 클릭합니다.고급 인증서 요청 페이지에서 만들기를 클릭하고 이 CA에 요청을 제출합니다.
고급 인증서 요청 페이지의 이름 텍스트 상자에 를 입력
contoso
하고 필요한 인증서 유형 드롭다운 목록에서 클라이언트 인증 인증서를 선택한 다음 제출을 클릭합니다.
참고
도메인 컨트롤러 이외의 컴퓨터에서 BizTalk Server 실행하는 경우 클라이언트 인증 인증서가 사용됩니다. 어댑터의 속성 대화 상자에서 구성됩니다.
인증 기관 관리 콘솔을 사용하여 다음과 같이 인증서를 발급합니다.
시작을 클릭하고 관리 도구를 가리킨 다음 인증 기관을 클릭합니다.
인증 기관 관리 콘솔 인증 기관의 이름을 확장한 다음 보류 중인 요청을 두 번 클릭합니다.
인증 기관 관리 콘솔 오른쪽 창에서 서비스 인증 인증서 요청을 마우스 오른쪽 단추로 클릭하고 모든 작업을 가리킨 다음 문제를 클릭합니다.
인증 기관 관리 콘솔 오른쪽 창에서 클라이언트 인증 인증서 요청을 마우스 오른쪽 단추로 클릭하고 모든 작업을 가리킨 다음 문제를 클릭합니다.
인증 기관 관리 콘솔 닫습니다.
발급된 인증서를 다음과 같이 컴퓨터에 설치합니다.
인터넷 Explorer 웹 사이트를 방문합니다
http://localhost/certsrv
.시작 페이지에서 보류 중인 인증서 요청의 상태 보기를 클릭합니다.
보류 중인 인증서 요청의 상태 보기 페이지에서 서버 인증 인증서를 클릭합니다.
인증서 발급 페이지에서 이 인증서 설치를 클릭합니다.
인터넷 Explorer 웹 사이트를 방문합니다
http://localhost/certsrv
.시작 페이지에서 보류 중인 인증서 요청의 상태 보기를 클릭합니다.
보류 중인 인증서 요청의 상태 보기 페이지에서 클라이언트 인증 인증서를 클릭합니다.
인증서 발급 페이지에서 이 인증서 설치를 클릭합니다.
발급된 인증서가 제대로 설치되었는지 다음과 같이 확인합니다.
MMC(Microsoft Management Console)를 엽니다. 이렇게 하려면 시작을 클릭하고 실행을 클릭한 다음 를 입력
mmc
한 다음 확인을 클릭합니다.MMC의 파일 메뉴에서 스냅인 추가/제거를 클릭합니다.
스냅인 추가/제거 대화 상자에서 추가를 클릭합니다.
독립 실행형 스냅인 추가 대화 상자의 사용 가능한 독립 실행형 스냅인 목록에서 인증서를 선택한 다음 추가를 클릭합니다.
인증서 스냅인 대화 상자에서 내 사용자 계정 옵션을 선택한 다음 마침을 클릭합니다.
열려 있는 모든 대화 상자를 닫습니다.
MMC의 콘솔 루트 창에서 인증서 - 현재 사용자, 개인, 인증서를 차례로 확장한 다음 이전 단계에서 설치한 인증서가 표시되는지 확인합니다.
이 연습에 대한 BizTalk 애플리케이션 만들기
시작을 클릭하고 모든 프로그램을 가리킨 다음 Microsoft BizTalk Server 20xx를 가리킨 다음 BizTalk Server 관리를 클릭합니다.
BizTalk Server 관리 콘솔에서 BizTalk 그룹을 확장하고 애플리케이션을 마우스 오른쪽 단추로 클릭하고 새로 만들기를 가리킨 다음 애플리케이션을 클릭합니다.
애플리케이션 속성 대화 상자의 일반 탭에서 를 입력
WcfMessageSecurity
한 다음 확인을 클릭합니다.WCF-NetTcp 어댑터를 사용하여 BizTalk 응용 프로그램에 대한 수신 위치를 다음과 같이 만듭니다.
BizTalk Server 관리 콘솔에서 WcfMessageSecurity를 확장하고 수신 포트를 마우스 오른쪽 단추로 클릭하고 새로 만들기를 가리킨 다음 단방향 수신 포트를 클릭합니다.
수신 포트 속성 대화 상자의 이름 텍스트 상자에 를 입력
WcfMessageSecurity.OrderRequest.Receive
한 다음 확인을 클릭합니다. 이 수신 포트의 이름은 엄격하게 임의로 지정되지만, 이 이름은 논리적으로 적합합니다.BizTalk Server 관리 콘솔에서 수신 위치를 마우스 오른쪽 단추로 클릭하고 새로 만들기를 클릭한 다음 단방향 수신 위치를 클릭합니다. WCF 클라이언트는 이 수신 위치에 WCF 메시지를 보냅니다. WcfMessageSecurity.OrderRequest.Receive 재귀 포트를 선택한 다음 확인을 클릭합니다.
수신 위치 속성 대화 상자의 이름 텍스트 상자에 을 입력합니다
WcfMessageSecurity.OrderRequest.Receive.NetTcp
. 이 수신 위치의 이름은 엄격하게 임의로 지정되지만, 이 이름은 논리적으로 적합합니다.수신 위치 속성 대화 상자의 형식 옆의 전송 섹션에서 드롭다운 목록에서 WCF-NetTcp를 선택한 다음 구성을 클릭합니다.
WCF-NetTcp 전송 속성 대화 상자의 일반 탭에 있는 주소(URI) 텍스트 상자에 를 입력합니다
net.tcp://localhost/WcfMessageSecurity
.WCF-NetTcp 전송 속성 대화 상자의 보안 탭에서 보안 모드 드롭다운 목록에서 메시지를 선택한 다음 메시지 클라이언트 자격 증명 유형 드롭다운 목록에서 인증서를 선택합니다. 그러면 메시지 보안 모드를 사용하도록 WCF-NetTcp 어댑터가 구성됩니다.
메시지 보안 모드와 함께 사용할 서비스 인증서를 구성합니다. WCF-NetTcp 전송 속성 대화 상자의 서비스 인증 섹션에서 찾아보기를 클릭합니다. 서비스 인증서 선택 대화 상자에서 이전 절차에서 설치한 서버 인증 인증서를 선택한 다음 확인을 클릭하여 대화 상자를 닫고 변경 내용을 저장합니다.
열려 있는 모든 대화 상자를 닫습니다.
참고
WCF 수신 어댑터를 사용하여 클라이언트 인증서를 인증하려면 클라이언트 인증서에 대한 CA 인증서 체인을 WCF 어댑터의 호스트 인스턴스를 실행하는 컴퓨터의 신뢰할 수 있는 루트 인증 기관 인증서 저장소에 설치해야 합니다. 이 연습에서는 인증서 서비스가 WCF 클라이언트 및 WCF 어댑터와 동일한 컴퓨터에 설치되어 있다고 가정하므로 컴퓨터에 CA 인증서 체인을 설치할 필요가 없습니다.
BizTalk 응용 프로그램에 대해 파일 송신 포트를 만듭니다. WCF 서비스를 나타내는 오케스트레이션에서 주문 요청 출력 메시지를 보내는 위치입니다.
BizTalk Server 관리 콘솔에서 WcfMessageSecurity를 확장하고 포트 보내기를 마우스 오른쪽 단추로 클릭하고 새로 만들기를 가리킨 다음 정적 단방향 송신 포트를 클릭합니다.
송신 포트 속성 대화 상자의 일반 탭에 있는 이름 텍스트 상자에 를 입력합니다
WcfMessageSecurity.OrderRequest.Send.FILE
.송신 포트 속성 대화 상자의 형식 옆의 전송 섹션에서 드롭다운 목록에서 FILE을 선택한 다음 구성을 클릭합니다.
파일 전송 속성 대화 상자의 일반 탭에서 대상 폴더 텍스트 상자를 입력
C:\WCFMessageSecurity\OrderRequestOut
한 다음 확인을 클릭합니다.송신 포트 속성 대화 상자의 필터 탭에서 BTS를 선택합니다. 속성 필드에 대한 ReceivePortName을 입력하고 값 필드에 를 입력
WcfMessageSecurity.OrderRequest.Receive
한 다음 확인을 클릭합니다. 이 필터 식은 들어오는 WCF 메시지를 클라이언트에서 WcfMessageSecurity.OrderRequest.Receive 수신 포트로 이 송신 포트로 라우팅합니다.
BizTalk 애플리케이션에 대해 WCF 클라이언트 테스트
BizTalk Server 관리 콘솔에서 WcfMessageSecurity를 마우스 오른쪽 단추로 클릭한 다음 시작을 클릭합니다. 시작 대화 상자에서 시작을 클릭합니다.
BizTalk Server 관리 콘솔에서 플랫폼 설정, 호스트 인스턴스, BizTalkServerApplication 또는 다른 적절한 호스트 instance 마우스 오른쪽 단추로 클릭한 다음 다시 시작을 클릭합니다.
이 연습의 작업 폴더에 대해 C:\WCFMessageSecurity 라는 폴더를 만듭니다. 연습 파일을 이 폴더에 추출합니다.
Visual Studio의 C:\ WCFMessageSecurity 폴더에서 WcfMessageSecurity.sln 파일을 엽니다.
Visual Studio의 솔루션 탐색기 WcfClient를 확장한 다음 Program.cs를 열어 검토합니다.
클라이언트가 이전 절차에서 만든 WCF-NetTcp 수신 위치로 메시지를 보냅니다.
클라이언트는 NetTcpBinding을 사용하여 채널을 만든 다음 클라이언트 자격 증명 형식에 인증서를 사용하도록 바인딩을 구성합니다.
클라이언트가 클라이언트 인증에 대해 이전 절차에서 설치한 클라이언트 인증 인증서를 사용하도록 엔드포인트 동작을 구성합니다.
Program 클래스는 IClientMessageInspector 및 IEndpointBehavior 인터페이스를 구현하여 명령 프롬프트에서 이 클라이언트에서 나가는 WCF 메시지를 표시합니다.
Visual Studio의 솔루션 탐색기 WcfMessageSecurity 솔루션을 마우스 오른쪽 단추로 클릭한 다음 다시 빌드를 클릭합니다.
Visual Studio의 디버그 메뉴에서 디버깅하지 않고 시작을 클릭하여 WcfClient를 실행하여 WCF-NetTcp 수신 위치에 메시지를 보냅니다. 명령 프롬프트에 실행 결과가 표시됩니다.
명령 프롬프트에서 주문 요청 메시지를 검토합니다. OrderId 필드 및 메시지의 구조에 주의하세요.
명령 프롬프트에서 폴더로
C:\WCFMessageSecurity\OrderRequestOut
이동한 다음 WCF 클라이언트에서 보낸 주문 요청 메시지가 표시되는지 확인합니다.명령 프롬프트를 닫습니다.