방법: 서명 확인 설정
서명 확인은 메시지 초기자가 보낸 사람의 원래 메시지에 대한 응답으로 수신된 응답이 생성되었는지 확인하는 메커니즘입니다. 서명 확인은 WS-Security 1.1 사양에서 정의됩니다. 엔드포인트가 WS-Security 1.0을 지원할 경우, 서명 확인을 사용할 수 없습니다.
다음 절차에서는 AsymmetricSecurityBindingElement를 사용하여 서명 확인을 사용하도록 설정하는 방법을 지정합니다. SymmetricSecurityBindingElement를 사용하는 경우에도 동일한 절차를 사용할 수 있습니다. 이 프로시저는 방법: SecurityBindingElement를 사용하여 사용자 지정 바인딩 만들기에 있는 기본 단계를 기반으로 합니다.
코드에서 서명 확인을 사용하도록 설정하려면
BindingElementCollection 클래스의 인스턴스를 만듭니다.
SymmetricSecurityBindingElement 클래스의 인스턴스를 만듭니다.
RequireSignatureConfirmation를
true
로 설정합니다.보안 요소를 바인딩 컬렉션에 추가합니다.
방법: SecurityBindingElement를 사용하여 사용자 지정 바인딩 만들기에 지정된 대로 사용자 지정 바인딩을 만듭니다.
구성에서 서명 확인을 사용하도록 설정하려면
<customBinding>
요소를 구성 파일의<bindings>
섹션에 추가합니다.<binding>
요소를 추가하고 이름 특성을 적절한 값으로 설정합니다.적절한 인코딩 요소를 추가합니다. 다음 예제에서는
<TextMessageEncoding>
요소를 추가합니다.<security>
자식 요소를 추가하고requireSignatureConfirmation
특성을true
로 설정합니다.선택 사항. 부트스트랩 중에 서명 확인을 사용하도록 설정하려면 <secureConversationBootstrap> 자식 요소를 추가하고
requireSignatureConfirmation
특성을true
로 설정합니다.적절한 전송 요소를 추가합니다. 다음 예에서는 <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