다음을 통해 공유


방법: 전송 보안 및 메시지 자격 증명 사용

전송 자격 증명과 메시지 자격 증명을 모두 사용하여 서비스를 보안할 때 WCF(Windows Communication Foundation)에서 Transport 보안 모드와 Message 보안 모드가 최선의 방법으로 사용됩니다. 요컨대, 전송 계층 보안은 무결성과 기밀성을 제공하고, 메시지 계층 보안은 엄격한 전송 보안 메커니즘에서는 제공되지 않는 다양한 자격 증명을 제공합니다. 이 항목에서는 WSHttpBindingNetTcpBinding 바인딩을 사용하여 메시지 자격 증명을 통해 전송을 구현하는 기본 단계를 보여 줍니다. 보안 모드 설정에 대한 자세한 내용은 , 방법: 보안 모드 설정을 참조하십시오.

보안 모드를 TransportWithMessageCredential로 설정하면 전송에서 전송 수준 보안을 제공하는 실제 메커니즘을 결정합니다. HTTP의 경우 메커니즘이 HTTPS(HTTP를 통한 SSL(Secure Sockets Layer))이고, TCP의 경우 TCP 또는 Windows를 통한 SSL입니다.

전송이 HTTP(WSHttpBinding 사용)인 경우 HTTP를 통한 SSL 전송 수준 보안이 제공됩니다. 이 경우 이 항목의 뒷부분에 설명된 것처럼 포트에 바인딩된 SSL 인증서를 사용하여 서비스를 호스팅하는 컴퓨터를 구성해야 합니다.

전송이 TCP(NetTcpBinding 사용)인 경우 기본적으로 Windows 보안 또는 TCP를 통한 SSL 전송 수준 보안이 제공됩니다. TCP를 통한 SSL을 사용할 경우 이 항목의 뒷부분에 설명된 것처럼 SetCertificate 메서드를 사용하여 인증서를 지정해야 합니다.

전송 보안에 대해 인증서와 함께 WSHttpBinding을 사용하려면(코드)

  1. HttpCfg.exe 도구를 사용하여 시스템의 포트에 SSL 인증서를 바인딩합니다. 자세한 내용은 방법: SSL 인증서를 사용하여 포트 구성을 참조하십시오.

  2. WSHttpBinding 클래스의 인스턴스를 만들고 Mode 속성을 TransportWithMessageCredential로 설정합니다.

  3. ClientCredentialType 속성을 적절한 값으로 설정합니다. 자세한 내용은 자격 증명 형식 선택을 참조하십시오. 다음 코드에서는 Certificate 값을 사용합니다.

  4. 적절한 기본 주소를 사용하여 Uri 클래스의 인스턴스를 만듭니다. 주소에서는 "HTTPS" 스키마를 사용하고 시스템의 실제 이름과 SSL 인증서가 바인딩되는 포트 번호를 포함해야 합니다. 또는 구성에서 기본 주소를 설정할 수 있습니다.

  5. AddServiceEndpoint 메서드를 사용하여 서비스 끝점을 추가합니다.

  6. 다음 코드에 표시된 것처럼 ServiceHost 인스턴스를 만들고 Open 메서드를 호출합니다.

전송 보안에 대해 인증서와 함께 NetTcpBinding을 사용하려면(코드)

  1. NetTcpBinding 클래스의 인스턴스를 만들고 Mode 속성을 TransportWithMessageCredential로 설정합니다.

  2. ClientCredentialType을 적절한 값으로 설정합니다. 다음 코드에서는 Certificate 값을 사용합니다.

  3. 적절한 기본 주소를 사용하여 Uri 클래스의 인스턴스를 만듭니다. 주소에서 "net.tcp" 스키마를 사용해야 합니다. 또는 구성에서 기본 주소를 설정할 수 있습니다.

  4. ServiceHost 클래스의 인스턴스를 만듭니다.

  5. X509CertificateRecipientServiceCredential 클래스의 SetCertificate 메서드를 사용하여 서비스에 대한 X.509 인증서를 명시적으로 설정합니다.

  6. AddServiceEndpoint 메서드를 사용하여 서비스 끝점을 추가합니다.

  7. 다음 코드에 표시된 것처럼 Open 메서드를 호출합니다.

전송 보안에 대해 Windows와 함께 NetTcpBinding을 사용하려면(코드)

  1. NetTcpBinding 클래스의 인스턴스를 만들고 Mode 속성을 TransportWithMessageCredential로 설정합니다.

  2. ClientCredentialTypeWindows로 설정하여 Windows를 사용하도록 전송 보안을 설정합니다. 이 값이 기본값입니다.

  3. ClientCredentialType을 적절한 값으로 설정합니다. 다음 코드에서는 Certificate 값을 사용합니다.

  4. 적절한 기본 주소를 사용하여 Uri 클래스의 인스턴스를 만듭니다. 주소에서 "net.tcp" 스키마를 사용해야 합니다. 또는 구성에서 기본 주소를 설정할 수 있습니다.

  5. ServiceHost 클래스의 인스턴스를 만듭니다.

  6. X509CertificateRecipientServiceCredential 클래스의 SetCertificate 메서드를 사용하여 서비스에 대한 X.509 인증서를 명시적으로 설정합니다.

  7. AddServiceEndpoint 메서드를 사용하여 서비스 끝점을 추가합니다.

  8. 다음 코드와 같이 Open 메서드를 호출합니다.

구성 사용

WSHttpBinding을 사용하려면

  1. 포트에 바인딩된 SSL 인증서를 사용하여 컴퓨터를 구성합니다. 자세한 내용은 방법: SSL 인증서를 사용하여 포트 구성을 참조하십시오. 이 구성에서는 <transport> 요소 값을 설정할 필요가 없습니다.

  2. 메시지 수준 보안에 대한 클라이언트 자격 증명 형식을 지정합니다. 다음 예제에서는 <message> 요소의 clientCredentialType 특성을 UserName으로 설정합니다.

    <wsHttpBinding>
    <binding name="WsHttpBinding_ICalculator">
            <security mode="TransportWithMessageCredential" >
               <message clientCredentialType="UserName" />
            </security>
    </binding>
    </wsHttpBinding>
    

전송 보안에 대해 인증서와 함께 NetTcpBinding을 사용하려면

  1. TCP를 통한 SSL의 경우 <behaviors> 요소에서 인증서를 명시적으로 지정해야 합니다. 다음 예제에서는 기본 저장소 위치(로컬 컴퓨터 및 개인 저장소)에서 해당 발급자별로 인증서를 지정합니다.

    <behaviors>
     <serviceBehaviors>
       <behavior name="mySvcBehavior">
           <serviceCredentials>
             <serviceCertificate findValue="contoso.com"
                                 x509FindType="FindByIssuerName" />
           </serviceCredentials>
       </behavior>
     </serviceBehaviors>
    </behaviors>
    
  2. netTcpBinding Element를 바인딩 섹션에 추가합니다.

  3. 바인딩 요소를 추가하고 name 특성을 적절한 값으로 설정합니다.

  4. <security> 요소를 추가하고 mode 특성을 TransportWithMessageCredential로 설정합니다.

  5. <message> 요소를 추가하고 clientCredentialType 특성을 적절한 값으로 설정합니다.

    <bindings>
    <netTcpBinding>
      <binding name="myTcpBinding">
        <security mode="TransportWithMessageCredential" >
           <message clientCredentialType="Windows" />
        </security>
      </binding>
    </netTcpBinding>
    </bindings>
    

전송 보안에 대해 Windows와 함께 NetTcpBinding을 사용하려면

  1. netTcpBinding Element를 바인딩 섹션에 추가합니다.

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

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

  4. <transport> 요소를 추가하고 clientCredentialType 특성을 Windows로 설정합니다.

  5. <message> 요소를 추가하고 clientCredentialType 특성을 적절한 값으로 설정합니다. 다음 코드에서는 값을 인증서로 설정합니다.

    <bindings>
    <netTcpBinding>
      <binding name="myTcpBinding">
        <security mode="TransportWithMessageCredential" >
           <transport clientCredentialType="Windows" />
           <message clientCredentialType="Certificate" />
        </security>
      </binding>
    </netTcpBinding>
    </bindings>
    

참고 항목

작업

방법: 보안 모드 설정

개념

서비스에 보안 설정

기타 리소스

서비스 및 클라이언트에 보안 설정