이 섹션에서는 사용 시 WCF 메시지 보안에 대해 설명합니다 NetMsmqBinding.
비고
이 항목을 읽기 전에 보안 개념을 읽는 것이 좋습니다.
다음 그림에서는 WCF를 사용하여 큐에 대기하는 통신의 개념적 모델을 제공합니다. 이 그림과 용어는 설명하는 데 사용됩니다.
수송 보안 개념
WCF를 사용하여 큐에 대기 중인 메시지를 보낼 때 WCF 메시지는 MSMQ(메시지 큐) 메시지의 본문으로 연결됩니다. 전송 보안은 전체 MSMQ 메시지를 보호하지만 메시지(또는 SOAP) 보안은 MSMQ 메시지의 본문만 보호합니다.
메시지 보안의 주요 개념은 클라이언트가 대상 큐에 대한 메시지를 보호하는 전송 보안과 달리 수신 애플리케이션(서비스)에 대한 메시지를 보호한다는 것입니다. 따라서 메시지 보안을 사용하여 WCF 메시지를 보호하는 경우 MSMQ는 아무런 역할을 하지 않습니다.
WCF 메시지 보안은 인증서 또는 Kerberos 프로토콜과 같은 기존 보안 인프라와 통합되는 보안 헤더를 WCF 메시지에 추가합니다.
메시지 자격 증명 유형
서비스 및 클라이언트는 메시지 보안을 사용하여 서로 인증할 자격 증명을 표시할 수 있습니다. 모드 Security 를 설정하거나 Message
(즉, 전송 보안과 메시지 보안을 둘 다 사용)하여 Both
메시지 보안을 선택할 수 있습니다.
서비스는 이 속성을 사용하여 Current 클라이언트를 인증하는 데 사용되는 자격 증명을 검사할 수 있습니다. 이는 서비스에서 구현하도록 선택한 추가 권한 부여 검사에도 사용할 수 있습니다.
이 섹션에서는 다양한 자격 증명 형식과 큐에서 사용하는 방법을 설명합니다.
인증서
인증서 자격 증명 유형은 X.509 인증서를 사용하여 서비스 및 클라이언트를 식별합니다.
일반적인 시나리오에서 클라이언트와 서비스는 신뢰할 수 있는 인증 기관에서 유효한 인증서를 발급합니다. 그런 다음 연결이 설정되고 클라이언트는 서비스의 인증서를 사용하여 서비스의 유효성을 인증하여 서비스를 신뢰할 수 있는지 여부를 결정합니다. 마찬가지로, 서비스는 클라이언트의 인증서를 사용하여 클라이언트 신뢰의 유효성을 검사합니다.
큐의 연결이 끊긴 특성을 감안할 때 클라이언트와 서비스가 동시에 온라인 상태가 아닐 수 있습니다. 따라서 클라이언트와 서비스는 대역 외 인증서를 교환해야 합니다. 특히 클라이언트는 신뢰할 수 있는 저장소에서 서비스의 인증서(인증 기관에 연결될 수 있는)를 보유하여 올바른 서비스와 통신하고 있음을 신뢰해야 합니다. 클라이언트를 인증하기 위해 서비스는 메시지와 연결된 X.509 인증서를 사용하여 해당 저장소의 인증서와 일치하여 클라이언트의 신뢰성을 확인합니다. 다시 말하지만 인증서는 인증 기관에 연결되어야 합니다.
Windows를 실행하는 컴퓨터에서 인증서는 여러 종류의 저장소에 보관됩니다. 다른 저장소에 대한 자세한 내용은 인증서 저장소를 참조하세요.
윈도우즈
Windows 메시지 자격 증명 유형은 Kerberos 프로토콜을 사용합니다.
Kerberos 프로토콜은 도메인에서 사용자를 인증하고 인증된 사용자가 도메인의 다른 엔터티와 보안 컨텍스트를 설정할 수 있도록 하는 보안 메커니즘입니다.
큐에 대기 중인 통신에 Kerberos 프로토콜을 사용하는 경우의 문제는 KDC(키 배포 센터)가 배포하는 클라이언트 ID가 포함된 티켓이 상대적으로 수명이 짧다는 것입니다. 유효 기간은 티켓의 유효성을 나타내는 Kerberos 티켓과 연결됩니다. 따라서 대기 시간이 긴 경우 클라이언트를 인증하는 서비스에 토큰이 여전히 유효한지 확인할 수 없습니다.
이 자격 증명 유형을 사용하는 경우 서비스는 서비스 계정에서 실행되어야 합니다.
Kerberos 프로토콜은 메시지 자격 증명을 선택할 때 기본적으로 사용됩니다.
사용자 이름 암호
클라이언트는 이 속성을 사용하여 메시지의 보안 헤더에서 사용자 이름 암호를 사용하여 서버에 인증할 수 있습니다.
발행된 토큰
클라이언트는 보안 토큰 서비스를 사용하여 클라이언트를 인증하기 위해 서비스에 대한 메시지에 연결할 수 있는 토큰을 발급할 수 있습니다.
전송 및 메시지 보안 사용
전송 보안과 메시지 보안을 모두 사용하는 경우 전송 및 SOAP 메시지 수준에서 메시지를 보호하는 데 사용되는 인증서는 동일해야 합니다.