다음을 통해 공유


방법: 서명 확인 설정

서명 확인은 메시지 초기자가 보낸 사람의 원래 메시지에 대한 응답으로 수신된 응답이 생성되었는지 확인하는 메커니즘입니다. 서명 확인은 WS-Security 1.1 사양에서 정의됩니다. 엔드포인트가 WS-Security 1.0을 지원할 경우, 서명 확인을 사용할 수 없습니다.

다음 절차에서는 AsymmetricSecurityBindingElement를 사용하여 서명 확인을 사용하도록 설정하는 방법을 지정합니다. SymmetricSecurityBindingElement를 사용하는 경우에도 동일한 절차를 사용할 수 있습니다. 이 프로시저는 방법: SecurityBindingElement를 사용하여 사용자 지정 바인딩 만들기에 있는 기본 단계를 기반으로 합니다.

코드에서 서명 확인을 사용하도록 설정하려면

  1. BindingElementCollection 클래스의 인스턴스를 만듭니다.

  2. SymmetricSecurityBindingElement 클래스의 인스턴스를 만듭니다.

  3. RequireSignatureConfirmationtrue로 설정합니다.

  4. 보안 요소를 바인딩 컬렉션에 추가합니다.

  5. 방법: SecurityBindingElement를 사용하여 사용자 지정 바인딩 만들기에 지정된 대로 사용자 지정 바인딩을 만듭니다.

구성에서 서명 확인을 사용하도록 설정하려면

  1. <customBinding> 요소를 구성 파일의 <bindings> 섹션에 추가합니다.

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

  3. 적절한 인코딩 요소를 추가합니다. 다음 예제에서는 <TextMessageEncoding> 요소를 추가합니다.

  4. <security> 자식 요소를 추가하고 requireSignatureConfirmation 특성을 true로 설정합니다.

  5. 선택 사항. 부트스트랩 중에 서명 확인을 사용하도록 설정하려면 <secureConversationBootstrap> 자식 요소를 추가하고 requireSignatureConfirmation 특성을 true로 설정합니다.

  6. 적절한 전송 요소를 추가합니다. 다음 예에서는 <httpTransport>를 추가합니다.

    <bindings>
      <customBinding>
        <binding name="SignatureConfirmationBinding">
          <security requireSignatureConfirmation="true">
            <secureConversationBootstrap requireSignatureConfirmation="true" />
              </security>
           <textMessageEncoding />
             <httpTransport />
        </binding>
      </customBinding>
    </bindings>
    

예시

다음 코드는 SymmetricSecurityBindingElement의 인스턴스를 만들고 RequireSignatureConfirmation 속성을 true로 설정합니다. 이 예제에서는 앞의 예제에서 살펴본 <secureConversationBootstrap> 요소를 사용하지 않습니다. 이 예제에서는 Windows(Kerberos 프로토콜) 토큰을 사용할 경우의 서명 확인을 보여 줍니다. 이 경우에는 클라이언트의 서명이 서비스로부터의 모든 응답에서 반환되며 클라이언트에 의해 확인됩니다.

private Binding CreateBinding()
{
    BindingElementCollection bindings = new BindingElementCollection();
    KerberosSecurityTokenParameters tokens = new KerberosSecurityTokenParameters();
    SymmetricSecurityBindingElement security =
      new SymmetricSecurityBindingElement(tokens);

    // Require that every request and return be correlated.
    security.RequireSignatureConfirmation = true;

    bindings.Add(security);
    TextMessageEncodingBindingElement encoding = new TextMessageEncodingBindingElement();
    bindings.Add(encoding );
    HttpTransportBindingElement transport = new HttpTransportBindingElement();
    bindings.Add(transport);
    CustomBinding myBinding = new CustomBinding(bindings);
    return myBinding;
}
Private Function CreateBinding() As Binding
    Dim bindings As New BindingElementCollection()
    Dim tokens As New KerberosSecurityTokenParameters()

    Dim security As New SymmetricSecurityBindingElement(tokens)

    ' Require that every request and return be correlated.
    security.RequireSignatureConfirmation = True

    bindings.Add(security)
    Dim encoding As New TextMessageEncodingBindingElement()
    bindings.Add(encoding)
    Dim transport As New HttpTransportBindingElement()
    bindings.Add(transport)
    Dim myBinding As New CustomBinding(bindings)
    Return myBinding
End Function

참고 항목