방법: 보안 모드 설정
WCF(Windows Communication Foundation) 보안에는 대부분의 미리 정의된 바인딩에서 볼 수 있는 세 가지 공통 보안 모드인 전송, 메시지 및 "메시지 자격 증명이 있는 전송"이 있습니다. 두 가지 추가 모드는 BasicHttpBinding에 있는 "transport-credential only" 모드와 NetMsmqBinding에 있는 "Both" 모드라는 두 가지 바인딩에만 해당됩니다. 그러나 이 항목에서는 세 가지 일반 보안 모드(Transport, Message, TransportWithMessageCredential)에 대해 중점적으로 설명합니다.
모든 미리 정의된 바인딩이 이러한 모드를 모두 지원하는 것은 아닙니다. 이 항목에서는 WSHttpBinding 및 NetTcpBinding 클래스를 사용하여 모드를 설정하고 프로그래밍 방식과 구성을 통한 모드 설정 방법에 대해 설명합니다.
자세한 내용은 WCF 보안, 보안 개요, 보안 서비스 및 서비스 및 클라이언트 보안을 참조하세요. 전송 모드 및 메시지에 대한 자세한 내용은 전송 보안 및 메시지 보안을 참조하세요.
코드에서 보안 모드를 설정하려면
사용 중인 바인딩 클래스의 인스턴스를 만듭니다. 사전 정의된 바인딩 목록은 시스템 제공 바인딩을 참조하세요. 이 예제에서는 WSHttpBinding 클래스의 인스턴스를 만듭니다.
Mode
속성에서 반환하는 개체의Security
속성을 설정합니다.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Transport
또는 다음 코드에 표시된 것처럼 모드를 메시지로 설정합니다.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Message
또는 다음 코드에 표시된 것처럼 모드를 메시지 자격 증명을 사용한 전송으로 설정합니다.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.TransportWithMessageCredential;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.TransportWithMessageCredential
다음 코드에 표시된 것처럼 바인딩의 생성자에서 모드를 설정할 수도 있습니다.
WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
Dim b As New WSHttpBinding(SecurityMode.Message)
ClientCredentialType 속성 설정
모드를 세 값 중 하나로 설정하면 ClientCredentialType
속성을 설정하는 방법이 결정됩니다. 예를 들어, WSHttpBinding 클래스를 사용하여 모드를 Transport
로 설정할 경우 ClientCredentialType 클래스의 HttpTransportSecurity 속성을 적절한 값으로 설정해야 합니다.
전송 모드에 대해 ClientCredentialType 속성을 설정하려면
바인딩의 인스턴스를 만듭니다.
Mode
속성을Transport
로 설정합니다.ClientCredential
속성을 적절한 값으로 설정합니다. 다음 코드에서는 속성을Windows
로 설정합니다.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport; b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Transport b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows
메시지 모드에 대해 ClientCredentialType 속성을 설정하려면
바인딩의 인스턴스를 만듭니다.
Mode
속성을Message
로 설정합니다.ClientCredential
속성을 적절한 값으로 설정합니다. 다음 코드에서는 속성을Certificate
로 설정합니다.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message; b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Message b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate
구성에서 모드 및 ClientCredentialType 속성을 설정하려면
구성 파일의 <bindings> 요소에 적절한 바인딩 요소를 추가합니다. 다음 예에서는 <wsHttpBinding> 요소를 추가합니다.
<binding>
요소를 추가하고name
특성을 적절한 값으로 설정합니다.<security>
요소를 추가하고mode
특성을Message
,Transport
또는TransportWithMessageCredential
로 설정합니다.모드를
Transport
로 설정한 경우<transport>
요소를 추가하고clientCredential
특성을 적절한 값으로 설정합니다.다음 예제에서는 모드를 "
Transport"
로 설정한 다음clientCredentialType
요소의<transport>
특성을 "Windows"
로 설정합니다.<wsHttpBinding> <binding name="TransportSecurity"> <security mode="Transport" > <transport clientCredentialType = "Windows" /> </security> </binding> </wsHttpBinding >
또는
security mode
를 "Message"
로 설정한 다음<"message">
요소를 설정합니다. 이 예제에서는clientCredentialType
을 "Certificate"
로 설정합니다.<wsHttpBinding> <binding name="MessageSecurity"> <security mode="Message" > <message clientCredentialType = "Certificate" /> </security> </binding> </wsHttpBinding >
TransportWithMessageCredential 값은 특별한 경우에 사용되며 이에 대해서는 아래에 설명되어 있습니다.
TransportWithMessageCredential 사용
보안 모드를 TransportWithMessageCredential
로 설정하면 전송에서 전송 수준 보안을 제공하는 실제 메커니즘을 결정합니다. 예를 들어, HTTP 프로토콜에서는 HTTP를 통한 SSL(Secure Sockets Layer)(HTTPS)을 사용합니다. 따라서 전송 보안 개체(예: ClientCredentialType
)의 HttpTransportSecurity 속성 설정은 무시됩니다. 즉, 메시지 보안 개체(ClientCredentialType
바인딩의 경우 WSHttpBinding
개체)의 NonDualMessageSecurityOverHttp만 설정할 수 있습니다.
자세한 내용은 방법: 전송 보안 및 메시지 자격 증명 사용을 참조하세요.