Как: вызов WCF с подписанным XML с подписью только тела и отметки времени - PullRequest
0 голосов
/ 29 мая 2019

Этот вопрос является дубликатом Подписать тело SOAP и метку времени с сертификатом X509 в WCF

Я сталкиваюсь с проблемой, когда хочу создать вызов WCF с подписанным XML.Целью является вызов SOAP WCF, который содержит заголовок Security, с SignedInfo для метки времени (также в заголовке безопасности) и для тела.

Я пробовал множество вещей: * Использованиепользовательская привязка * Использование существующих привязок в .NET (которые никогда не дают правильного конверта SOAP) * Использование класса SignedXml, который имеет трудности с префиксом ds:, поэтому его также следует переопределить * Копирование кода .NET онлайн для отладкигде что-то идет не так (но это слишком сложно)

Есть много сайтов, которые могут проверить подписанный XML, но они всегда говорят мне, что моя подпись неверна.

Код, который я используюдля генерации DigestValue (txtOutput.Text - это фактический XML-код, который я вставляю)

SHA1 sha = new SHA1Managed();
Transform transform = GetTransformation();
transform.LoadInput(new MemoryStream(Encoding.UTF8.GetBytes(txtOutput.Text)));
var hash = transform.GetDigestedOutput(sha);
txtDigest.Text = Convert.ToBase64String(hash);

Важное примечание: с помощью SOAP UI я могу получить правильный запрос HTTPS (который проверяется «другой стороной»)), но когда я пытаюсь восстановить DigestValue этого XML-метки времени, я получаю результат, отличный от результата пользовательского интерфейса SOAP.

...