다음을 통해 공유


방법: 보안 모드 설정

WCF(Windows Communication Foundation) 보안에는 대부분의 미리 정의된 바인딩에서 발견되는 전송, 메시지, "메시지 자격 증명을 사용한 전송"의 세 가지 일반 보안 모드가 있습니다. 두 개의 추가 모드는 두 바인딩에만 해당됩니다. 즉, "전송-자격 증명만" 모드는 BasicHttpBinding에서 사용되고, "모두" 모드는 NetMsmqBinding에서 사용됩니다. 그러나 이 항목에서는 세 가지 일반 보안 모드(Transport, Message, TransportWithMessageCredential)에 대해 중점적으로 설명합니다.

모든 미리 정의된 바인딩이 이러한 모드를 모두 지원하는 것은 아닙니다. 이 항목에서는 WSHttpBindingNetTcpBinding 클래스를 사용하여 모드를 설정하고 프로그래밍 방식과 구성을 통한 모드 설정 방법에 대해 설명합니다.

WCF 보안에 대한 자세한 내용은 , 보안 개요, 서비스에 보안 설정서비스 및 클라이언트에 보안 설정을 참조하십시오. 전송 모드 및 메시지에 대한 자세한 내용은 , 전송 보안WCF의 메시지 보안을 참조하십시오.

코드에서 보안 모드를 설정하려면

  1. 사용 중인 바인딩 클래스의 인스턴스를 만듭니다. 미리 정의된 바인딩 목록은 시스템 제공 바인딩을 참조하십시오. 이 예제에서는 WSHttpBinding 클래스의 인스턴스를 만듭니다.

  2. Security 속성에서 반환하는 개체의 Mode 속성을 설정합니다.

    또는 다음 코드에 표시된 것처럼 모드를 메시지로 설정합니다.

    또는 다음 코드에 표시된 것처럼 모드를 메시지 자격 증명을 사용한 전송으로 설정합니다.

  3. 다음 코드에 표시된 것처럼 바인딩의 생성자에서 모드를 설정할 수도 있습니다.

ClientCredentialType 속성 설정

모드를 세 값 중 하나로 설정하면 ClientCredentialType 속성을 설정하는 방법이 결정됩니다. 예를 들어, WSHttpBinding 클래스를 사용하여 모드를 Transport로 설정할 경우 HttpTransportSecurity 클래스의 ClientCredentialType 속성을 적절한 값으로 설정해야 합니다.

전송 모드에 대해 ClientCredentialType 속성을 설정하려면

  1. 바인딩의 인스턴스를 만듭니다.

  2. Mode 속성을 Transport로 설정합니다.

  3. ClientCredential 속성을 적절한 값으로 설정합니다. 다음 코드에서는 속성을 Windows로 설정합니다.

메시지 모드에 대해 ClientCredentialType 속성을 설정하려면

  1. 바인딩의 인스턴스를 만듭니다.

  2. Mode 속성을 Message로 설정합니다.

  3. ClientCredential 속성을 적절한 값으로 설정합니다. 다음 코드에서는 속성을 Certificate로 설정합니다.

구성에서 모드 및 ClientCredentialType 속성을 설정하려면

  1. 해당 바인딩 요소를 구성 파일의 <bindings> 요소에 추가합니다. 다음 예제에서는 <wsHttpBinding> 요소를 추가합니다.

  2. <binding> 요소를 추가하고 해당 name 특성을 적절한 값으로 설정합니다.

  3. <security> 요소를 추가하고 mode 특성을 Message, Transport 또는 TransportWithMessageCredential로 설정합니다.

  4. 모드를 Transport로 설정한 경우 <transport> 요소를 추가하고 clientCredential 특성을 적절한 값으로 설정합니다.

    다음 예제에서는 모드를 "Transport"로 설정한 다음 <transport> 요소의 clientCredentialType 특성을 "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)을 사용합니다. 따라서 전송 보안 개체(예: HttpTransportSecurity)의 ClientCredentialType 속성 설정은 무시됩니다. 즉, 메시지 보안 개체(WSHttpBinding 바인딩의 경우 NonDualMessageSecurityOverHttp 개체)의 ClientCredentialType만 설정할 수 있습니다.

자세한 내용은 방법: 전송 보안 및 메시지 자격 증명 사용을 참조하십시오.

참고 항목

작업

방법: SSL 인증서를 사용하여 포트 구성
방법: 전송 보안 및 메시지 자격 증명 사용

개념

WCF의 메시지 보안
보안 개요
시스템 제공 바인딩

기타 리소스

전송 보안
<security> of <wsHttpBinding>
<security> of <basicHttpBinding>
<security> of <netTcpBinding>