Я должен назвать явский веб-сервис, подписанный свидетельством, используя .net применение.
Я использую следующий код, чтобы заключить контракт с клиентом:
private void SignWebService()
{
X509SecurityToken token = GetSecurityToken();
if (token == null)
return;
SoapContext requestContext = service.RequestSoapContext;
requestContext.Security.Timestamp.TtlInSeconds = 60;
requestContext.Security.Tokens.Add(token);
requestContext.Security.Elements.Add(new MessageSignature(token));
}
private X509SecurityToken GetSecurityToken()
{
X509CertificateStore store = null;
try
{
ServicePointManager.ServerCertificateValidationCallback = delegate(object s, System.Security.Cryptography.X509Certificates.X509Certificate cert, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; };
store = X509CertificateStore.LocalMachineStore(X509CertificateStore.MyStore);
bool open = store.OpenRead();
string subjectName = "CN=Subj";
foreach (X509Certificate cert in store.Certificates)
{
if (cert.Subject == subjectName)
{
return new X509SecurityToken(cert);
}
}
return null;
}
catch (Exception ex)
{
return null;
}
finally
{
if (store != null) { store.Close(); }
}
}
Этот код от http://msdn.microsoft.com/en-us/library/ms819963.aspxЭти методы выполняются успешно, но после того, как тот мой запрос МЫЛА не содержит заголовок вообще (включая раздел безопасности)
<?xml version="1.0" encoding="utf-8"?>
...
Но запрос МЫЛА должен быть
...
Что я могу сделать, чтобы добавить заголовок с разделом безопасности?
Спасибо за помощь.