2016-07-24 8 views
2

WSE2からWCFへコードを変換する必要があります。また、X509Certificate2オブジェクトでSOAPメッセージの署名を実装する方法についていくつかのヒントが必要です。WSE2からWCFへ:SOAPメッセージへの署名

WSE2コード:

X509SecurityToken tok = new X509SecurityToken(cert); 
SoapContext cont = cfs.RequestSoapContext; 
cont.Security.Tokens.Add(tok); 
cont.Security.Elements.Add(new MessageSignature(tok)); 

"証明書は、" 私のX509Certificate2オブジェクトと、 "CFSは" 私のWebサービスクライアントオブジェクトです。

WSE2なしでこの作業を行うにはどうすればよいですか?WCFで同じことを行う方法は?

答えて

0

カスタムバインドを使用できますが、まず必要なバインディングの種類を把握する必要があります。 herehereをご覧ください。カスタムバインディングでは、署名用のセキュリティトークンを追加できます。このような私の非対称結合ルックス:(しかし、あなたはまた、結合の対称を使用することができます)

AsymmetricSecurityBindingElement asymmetricBinding = SecurityBindingElement.CreateMutualCertificateDuplexBindingElement(
       MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10); 
     asymmetricBinding.InitiatorTokenParameters = new X509SecurityTokenParameters 
     { 
      InclusionMode = SecurityTokenInclusionMode.AlwaysToRecipient 
     }; 
     asymmetricBinding.RecipientTokenParameters = new X509SecurityTokenParameters 
     { 
      InclusionMode = SecurityTokenInclusionMode.Never 
     }; 
     asymmetricBinding.EndpointSupportingTokenParameters.SignedEncrypted.Add(new UserNameSecurityTokenParameters 
     { 
      InclusionMode = SecurityTokenInclusionMode.AlwaysToRecipient 
     }); 
     asymmetricBinding.IncludeTimestamp = true; 
     asymmetricBinding.SecurityHeaderLayout = SecurityHeaderLayout.Strict; 
     asymmetricBinding.MessageProtectionOrder = MessageProtectionOrder.SignBeforeEncrypt; 

     var textMessageEncoding = new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8)); 
     var httpsTransport = new HttpsTransportBindingElement(); 

     CustomBinding b = new CustomBinding(asymmetricBinding, textMessageEncoding, httpsTransport); 

次に、あなたはEndpointClient

var wsClient = new YourEndpointClient(b, new EndpointAddress(yourWsEndPointAddress)); 
wsClient.ClientCredentials.ClientCertificate.Certificate = new X509Certificate2(cert); 
wsClient.ClientCredentials.ServiceCertificate.DefaultCertificate = new X509Certificate2(cert); 
のClientCredentialsに証明書を設定することができます
関連する問題