Мой вопрос почти решен.
Я заметил, что заголовок SOAP, сгенерированный этим кодом, выглядит следующим образом:
<soapenv:Header>
<wsa:Action></wsa:Action>
<wsa:MessageID>uuid:2eead708-03f9-4624-a866-35f3730eac23</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:Address>
</wsa:ReplyTo>
<wsa:To>https://cuidamos.com/ws/cuidamos</wsa:To>
<wsse:Security soapenv:mustUnderstand="1">
<wsu:Timestamp wsu:Id="Timestamp-64f67137-f82d-4a9c-8b2e-1cc41104683d">
<wsu:Created>2019-06-27T12:48:00Z</wsu:Created>
<wsu:Expires>2019-06-27T12:53:00Z</wsu:Expires>
</wsu:Timestamp>
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecurityToken-b8467c25-c62c-406a-9831-46e6c676153a">
<wsse:Username>Username</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">Password</wsse:Password>
<wsse:Nonce>JEmovy7RDpapzumPTiUUgQ==</wsse:Nonce>
<wsu:Created>2019-06-27T12:48:00Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
И я использовал это решение для отслеживания моего сообщения о запросе мыла.
Но когда я использую приложение SoapUI, чтобы сделать запрос с этим заголовком SOAP, я заметил, что если я удалю элемент , он будет работать нормально. Поэтому мне нужно удалить этот элемент , который генерируется динамически, и именно здесь я работаю, но пока не знаю, как это сделать.
EDIT
Я почти на месте, я обнаружил, что если я создаю атрибут EncodingType внутри элемента Nonce, он работает, мне не нужно удалять элемент Nonce. Это было проверено на SoapUI.
Элемент Nonce должен быть создан следующим образом, innerText для элемента Nonce - это хеш-строка (SHA-1), создаваемая при каждом запросе:
6OX8gvIRETEbzaCwZ4byn / NEpzDI = </ wsse: Нонс>
Для достижения этого результата я создал динамически UsernameToken с XML:
XmlDocument document = new XmlDocument();
XmlElement usernameTokenElement = document.CreateElement("wsse", "UsernameToken", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
XmlElement usernameChild;
usernameChild = document.CreateElement("wsse", "Username", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
usernameChild.InnerText = "WSMASSIT";
usernameTokenElement.AppendChild(usernameChild);
XmlElement passwordChild;
passwordChild = document.CreateElement("wsse", "Password", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
passwordChild.SetAttribute("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText");
passwordChild.InnerText = "AstWs218";
usernameTokenElement.AppendChild(passwordChild);
string phrase = Guid.NewGuid().ToString();
var nonce = GetSHA1String(phrase); // User Function to create SHA-1 Hash String
XmlElement nonceChild;
nonceChild = document.CreateElement("wsse", "Nonce", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
nonceChild.SetAttribute("EncodingType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary");
nonceChild.InnerText = nonce;
usernameTokenElement.AppendChild(nonceChild);
var token = new UsernameToken(usernameTokenElement);
Теперь у меня есть другая проблема: дочерние элементы имени пользователя и пароля создаются с успехом, но дочерние элементы Nonce перезаписываются во время выполнения, что означает, что имя пользователя и пароль создаются точно так же, как я кодировал, но Nonce продолжает создаваться без EncondingType и innerText строка хеша отличается от того, что создал мой код.
РЕДАКТИРОВАТЬ 2
Я сделал простой тест, добавив следующий код
document.AppendChild(usernameTokenElement);
var xml = token.GetXml(document);
И если я проверяю документ, я вижу элемент Nonce с атрибутом EncodingType, но если я проверяю xml, у него нет атрибута EncodingType для элемента Nonce.
РЕДАКТИРОВАТЬ 3
Проблема решена, но на вопрос EDIT 2 нет ответа.
В двух словах, Nonce больше не требуется, отдел, отвечающий за управление этой конечной точкой, выполнил эту настройку на сервере.
В спецификации UsernameToken WSS document написано, что Nonce и Created не требуются, поэтому этим предположением проблема была решена таким образом, помня, что этот запрос сделан по протоколу https (туннелирование SSL).