WCF(Windows Communication Foundation)에는 보안(Transport
및)을 제공하기 위한 두 가지 주요 모드와 Message
두 가지 모드를 결합한 세 번째 모드(TransportWithMessageCredential
)가 있습니다. 이 항목에서는 메시지 보안 및 메시지 보안을 사용하는 이유에 대해 설명합니다.
메시지 보안이란?
메시지 보안은 WS-Security 사양을 사용하여 메시지를 보호합니다. WS-Security 사양은 SOAP 메시지 수준에서 기밀성, 무결성 및 인증을 보장하기 위해 SOAP 메시징의 개선 사항을 설명하며, 전송 수준 대신 메시지 수준에서 이를 수행합니다.
간단히 말해서 메시지 보안은 모든 메시지 보호(서명 또는 암호화)와 함께 모든 메시지와 함께 보안 자격 증명 및 클레임을 캡슐화하여 전송 보안과 다릅니다. 콘텐츠를 수정하여 메시지에 직접 보안을 적용하면 보안 측면과 관련하여 보안 메시지를 자체 포함할 수 있습니다. 이렇게 하면 전송 보안을 사용할 때 불가능한 몇 가지 시나리오가 가능합니다.
메시지 보안을 사용하는 이유
메시지 수준 보안에서 모든 보안 정보는 메시지에 캡슐화됩니다. 전송 수준 보안 대신 메시지 수준 보안으로 메시지를 보호하면 다음과 같은 이점이 있습니다.
엔드 투 엔드 보안. SSL(Secure Sockets Layer)과 같은 전송 보안은 통신이 지점 간일 때만 메시지를 보호합니다. 최종 수신기에 도달하기 전에 메시지가 하나 이상의 SOAP 중개자(예: 라우터)로 라우팅되는 경우 중개자가 통신에서 메시지를 읽은 후에는 메시지 자체가 보호되지 않습니다. 또한 클라이언트 인증 정보는 첫 번째 중개자만 사용할 수 있으며 필요한 경우 대역 외 방식으로 최종 수신기로 다시 전송되어야 합니다. 이는 전체 경로가 개별 홉 간에 SSL 보안을 사용하는 경우에도 적용됩니다. 메시지 보안은 메시지와 직접 작동하고 메시지의 XML을 보호하므로 보안은 최종 수신자가 되기 전에 관련되는 중간자 수에 관계없이 메시지와 함께 유지됩니다. 이를 통해 진정한 엔드 투 엔드 보안 시나리오를 사용할 수 있습니다.
유연성이 향상되었습니다. 전체 메시지 대신 메시지의 일부를 서명하거나 암호화할 수 있습니다. 즉, 중개자가 의도한 메시지 부분을 볼 수 있습니다. 발신자가 메시지의 일부 정보를 중개자에게 표시해야 하지만 변조되지 않도록 하려는 경우 서명만 할 수 있지만 암호화되지 않은 상태로 둘 수 있습니다. 서명은 메시지의 일부이므로 최종 수신자가 메시지의 정보가 그대로 수신되었는지 확인할 수 있습니다. 한 시나리오에는 작업 헤더 값에 따라 메시지를 라우팅하는 SOAP 중간 서비스가 있을 수 있습니다. 기본적으로 WCF는 작업 값을 암호화하지 않고 메시지 보안이 사용되는 경우 서명합니다. 따라서 이 정보는 모든 중개자가 사용할 수 있지만 아무도 변경할 수 없습니다.
여러 전송을 지원합니다. 보안 프로토콜을 사용하지 않고도 명명된 파이프 및 TCP와 같은 다양한 전송을 통해 보안 메시지를 보낼 수 있습니다. 전송 수준 보안을 사용하면 모든 보안 정보의 범위가 단일 특정 전송 연결로 지정되며 메시지 콘텐츠 자체에서 사용할 수 없습니다. 메시지 보안은 메시지를 전송하는 데 사용하는 전송에 관계없이 메시지를 안전하게 만들고, 보안 컨텍스트는 메시지 내에 직접 포함됩니다.
광범위한 자격 증명 및 주장 집합을 지원합니다. 메시지 보안은 SOAP 메시지 내에서 모든 유형의 클레임을 전송할 수 있는 확장 가능한 프레임워크를 제공하는 WS-Security 사양을 기반으로 합니다. 전송 보안과 달리, 사용할 수 있는 인증 메커니즘 또는 클레임 집합은 전송 기능에 의해 제한되지 않습니다. WCF 메시지 보안에는 여러 유형의 인증 및 클레임 전송이 포함되며 필요에 따라 추가 형식을 지원하도록 확장할 수 있습니다. 예를 들어 이러한 이유로 메시지 보안 없이는 페더레이션된 자격 증명 시나리오를 사용할 수 없습니다. WCF에서 지원하는 페더레이션 시나리오에 대한 자세한 내용은 페더레이션 및 발급된 토큰을 참조하세요.
메시지 및 전송 보안 비교 방법
Transport-Level 보안의 장단점
전송 보안에는 다음과 같은 이점이 있습니다.
통신 당사자가 XML 수준 보안 개념을 이해할 필요가 없습니다. 예를 들어 HTTPS를 사용하여 통신을 보호하는 경우와 같이 상호 운용성을 향상시킬 수 있습니다.
일반적으로 성능이 향상되었습니다.
하드웨어 가속기를 사용할 수 있습니다.
스트리밍이 가능합니다.
전송 보안에는 다음과 같은 단점이 있습니다.
홉-홉 전용입니다.
제한적이고 확장할 수 없는 자격 증명 집합입니다.
운송 종속입니다.
Message-Level 보안의 단점
메시지 보안에는 다음과 같은 단점이 있습니다.
성능
메시지 스트리밍을 사용할 수 없습니다.
XML 수준 보안 메커니즘을 구현하고 WS-Security 사양을 지원해야 합니다. 이는 상호 운용성에 영향을 줄 수 있습니다.