C# SOAP WCF向标头添加签名和二进制SecurityToken
我还需要一些东西,签名必须在头标记内的安全标记内,带有BinarySecurityToken元素 就像: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
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流量。它们的肥皂信封是相似的。有关使用证书验证客户端的更多信息,请参阅以下链接。
如果有什么我可以帮忙的,请随时告诉我。请参阅以下内容: