Отправить wsse: безопасность заголовку SOAP в Asp.net? - PullRequest
0 голосов
/ 06 июля 2019

Мне нужно использовать веб-сервис с сертификатом безопасности WSSE.Предоставленный WSDL не имеет никакого написанного SoapHeader.Но мне нужно передать ему сертификат безопасности WSSE как SoapHeader.Я бегу с SoapUI, и это работает.Но мне нужно добавить это в мое приложение Asp.net.Мне нужно преобразовать приведенный ниже запрос в код C #.

Необработанный запрос в SoapUI выглядит следующим образом.(Чтобы получить это, я должен был перейти по этой ссылке https://www.soapui.org/soapui-projects/ws-security.html. Я получаю ответ в SOAPUI)

POST https://url/ServiceName HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "ServiceName_ws_providers_ServiceInfo_Binder_Service"
Content-Length: 4844
Host: IP address:Port
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:rop.gov.om:amms">
   <soapenv:Header>
       <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
       <ds:Signature Id="SIG-C78B85E81AA0000000000000000000000" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:SignedInfo>
       <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
       <ec:InclusiveNamespaces PrefixList="soapenv urn" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:CanonicalizationMethod>
       <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
       <ds:Reference URI="#id-C78B85E81AA9A00000000000000000000"><ds:Transforms>
       <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
       <ec:InclusiveNamespaces PrefixList="urn" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
       <ds:DigestValue>viN9XK/xKiEkDkWkWkwksksksil=</ds:DigestValue></ds:Reference></ds:SignedInfo>
       <ds:SignatureValue>H0l3fczlZ7pFxrfshLWQ4Pf3br/d6Enslkjfklasdlkasdlkfjaskdjflksadjflkjasdlkflkajsd
        n7hZYByqR31obCXTq2R+khsPsdkjflkjsadlfkjasdklfjakdsjflksajdflkjasdlfkjam73uij
        Y4SALSKDFJAKSDFasdlkjflksajdlfkjasdlfkjalksdjlfkjasldkfjaskdjflkaKXYOD1waOwa
        gMIojoZC1nw/1WYxpU5azhasdlfkjaksdjflksajdlfkjasdlfkjalksdjflksjadlfkjasO5zMO
        khv+DaGsCZF3rPdGxV4ra6fox4BQgQWjzlPGdA==</ds:SignatureValue><ds:KeyInfo Id="KI-C78B85E81000000000000000000000000"><wsse:SecurityTokenReference wsu:Id="STR-C78B85E81AA0000000000000000000000">
        <wsse:KeyIdentifier EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3">{some encrypted values here}</wsse:KeyIdentifier>
        </wsse:SecurityTokenReference></ds:KeyInfo></ds:Signature><wsu:Timestamp wsu:Id="TS-C78B85E81AA0000000000000000000000"><wsu:Created>2019-07-06T09:38:28.657Z</wsu:Created><wsu:Expires>2019-07-06T09:38:38.657Z</wsu:Expires></wsu:Timestamp></wsse:Security>
    </soapenv:Header>
   <soapenv:Body wsu:Id="id-C78B85E81AA0000000000000000000000" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
      ....Body goes here .....
   </soapenv:Body>
</soapenv:Envelope>

Я просмотрел разные статьи, написанные здесь и за ее пределами, но не смог найти ни одной статьи, помогающей достаточно, чтобыпередать сертификат WSSecurity при использовании веб-службы.

Кто-нибудь знает, как сгенерировать это в C #, если не в обычном веб-сервисе.

ПРИМЕЧАНИЕ. Я думал о том, чтобы сгенерировать это как HTML, но подпись всегда меняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...