Генерация токена имени пользователя для Soap запроса - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь сгенерировать SOAP токен имени пользователя, используя C#, но безуспешно

  <wsse:UsernameToken wsu:Id='UsernameToken-1231231231123123'>
         <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:UsernameToken>

приведенный выше является правильным форматом для нашей конечной точки SOAP, но когда я пытаюсь сгенерировать токен используя UsernameToken из пространства имен

Microsoft.Web.Services2.Security.Tokens

    UsernameToken t;
    t = new UsernameToken("UserName", "Password");
    string usernameTokenSection1 = t.GetXml(new XmlDocument()).OuterXml.ToString();

Я получил этот результат, который не работает

    <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecurityToken-cf96131b-1528-46a1-8f00-f61af616db91" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:Username>Username</wsse:Username>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">+S3AH9NHRtOpgdxEwqIVIg==</wsse:Nonce><wsu:Created>2020-04-04T06:46:53Z</wsu:Created></wsse:UsernameToken>

1 Ответ

1 голос
/ 04 апреля 2020

атрибут wsu:Id='UsernameToken-1231231231123123' является Id свойством UsernameToken

Итак, вы делаете это:

UsernameToken t = new UsernameToken("UserName", "Password", PasswordOption.SendPlainText)
{ 
    Id = "UsernameToken-1231231231123123"                 
};

Затем вы можете разобрать его в XmlDocument или XDocument что даст вам возможность настроить элементы в соответствии с вашими требованиями.

вы можете проанализировать его следующим образом var doc = XDocument.Parse(usernameTokenSection1);

Теперь, используя проанализированный XML, вы можете настроить его в соответствии со своими требованиями. Например, вы можете удалить элементы Nonce и Created, например:

var doc = XDocument.Parse(usernameTokenSection1);

XNamespace wsu = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
XNamespace wsse = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";

doc.Root.Descendants(wsse + "Nonce").Remove();
doc.Root.Descendants(wsu + "Created").Remove();
...