Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SOAP WCF向标头添加签名和二进制SecurityToken_C#_Xml_Wcf_Soap_Wsse - Fatal编程技术网

C# SOAP WCF向标头添加签名和二进制SecurityToken

C# SOAP WCF向标头添加签名和二进制SecurityToken,c#,xml,wcf,soap,wsse,C#,Xml,Wcf,Soap,Wsse,我还需要一些东西,签名必须在头标记内的安全标记内,带有BinarySecurityToken元素 就像: MIIDBDG4IF74CQIF6NCNZBND9QA2MB6HSO38E0RISILEFSZWIKDQBTOJGM7UX9FDEHOJDM4UVHSSFBEYGMGTAQRZG9YID3OVJOZSF+I3HWS9F6xl6sb2+wvYXD4DFk/OD+N7UszGsoWFZg ..... 我可以直接从客户端证书以编程方式填充xml元素,如下所示: var cert = new X

我还需要一些东西,签名必须在头标记内的安全标记内,带有BinarySecurityToken元素

就像:


MIIDBDG4IF74CQIF6NCNZBND9QA2MB6HSO38E0RISILEFSZWIKDQBTOJGM7UX9FDEHOJDM4UVHSSFBEYGMGTAQRZG9YID3OVJOZSF+I3HWS9F6xl6sb2+wvYXD4DFk/OD+N7UszGsoWFZg
.....
我可以直接从客户端证书以编程方式填充xml元素,如下所示:

var cert = new X509Certificate2(ClientCertificateFilePath, ClientCertificatePassword);
        var export = cert.Export(X509ContentType.Cert, ClientCertificatePassword);
        var base64 = Convert.ToBase64String(export);

问题是如何将签名和BinarySecurityToken添加到标头?

手动编写SOAP信封以调用服务可能是一种选择。
下面是关于如何添加SOAP头的一些讨论。

这通常是由于服务器端的web服务不是WCF,因此,我们可能无法通过WCF调用服务。
在我看来,上面的SOAP信封格式决定了WCF使用的绑定的通道形状,这可能与WCF服务兼容,后者使用证书对客户端进行身份验证

BasicHttpBinding binding = new BasicHttpBinding();
            binding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
            binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
当服务器使用证书对客户机进行身份验证时,客户机使用相同的绑定类型并向服务器提供证书,并在SOAP信封中附加证书的签名。 下面是与Fiddler捕获的服务器端通信期间的Http流量。它们的肥皂信封是相似的。

有关使用证书验证客户端的更多信息,请参阅以下链接。


如果有什么我可以帮忙的,请随时告诉我。

请参阅以下内容: