2017-02-03 3 views
4

ähnliche Frage hinzufügen: How do I add an EncodingType attribute to the Nonce element of a UsernameToken in WSE 3.0 (.NET)WebServicesClientProtocol EncodingType zu Nonce in Sicherheitskopf

Ich versuche Header zu ändern, die von WebServicesClientProtocol an Service senden wird.
Leider ist die Implementierung von WSSE Username and Token Security Spec 1.1 von Microsoft nicht mit dem Standard kompatibel und sendet EncodingType nicht mit Nonce.

In ähnlicher Frage habe ich oben auf Lösung verbunden war zu deaktivieren EncodingType Validierung auf dem Server, aber ich bin nicht in der Lage, etwas zu ändern.

I WSDL als Web-Referenz importiert haben, ich Basisklasse WebServicesClientProtocol

Dann in meinem Code dies mache ich geändert habe:

var client = new QueryClient(); 

SoapContext requestContext = client.RequestSoapContext; 
requestContext.Security.Timestamp.TtlInSeconds = 60; 
var userToken = new UsernameToken(_userName, _password, PasswordOption.SendHashed); 
requestContext.Security.Tokens.Add(userToken); 
X509SecurityToken signatureToken = GetSecurityToken(); 
requestContext.Security.Tokens.Add(signatureToken); 
MessageSignature sig = new MessageSignature(signatureToken); 
requestContext.Security.Elements.Add(sig); 
client.SetClientCredential(signatureToken); 
client.SetClientCredential(new UsernameToken(_userName, _password, PasswordOption.SendHashed)); 

dies schafft Anforderung, die fast ideal ist, aber Nonce nicht EncodingType bekam:

Nonce muss dieses Attribut haben: EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"

Wie kann ich dieses Attribut hinzufügen? Ich möchte vermeiden, Anforderung manuell zu erstellen, da ich Benutzername, Kennwort, BinarySecurityToken und Signatur angeben muss. Microsoft.Web.Services3 schafft alle notwendigen Elemente für mich, eine fehlende Sache ist dieses Attribut.

EDIT:

Dies ist Wunsch ich zu erstellen bin versucht:

<soap:Envelope xmlns:dz="http://dom.query.api.com" xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://dz.api.swd.zbp.pl/xsd"> 
    <soap: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"> 
      <wsse:UsernameToken wsu:Id="UsernameToken-E94CEB6F4708FB7C23148611494797612"> 
       <wsse:Username>my_login</wsse:Username> 
       <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">XqEwZ/CxaBfFvh487TjvN8qD63c=</wsse:Password> 
       <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">JzURe0CxvzRjmEcH/ndldw==</wsse:Nonce> 
       <wsu:Created>2017-02-09T09:42:27.976Z</wsu:Created> 
      </wsse:UsernameToken> 
      <wsse:BinarySecurityToken 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#X509PKIPathv1" wsu:Id="X509-E94CEB6F4708FB7C2314861149479517">MIIKnDCCB.........nmIngeg6d6TNI=</wsse:BinarySecurityToken> 
      <ds:Signature Id="SIG-E94CEB6F4708FB7C23148611494795311" 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="dz soap xsd" 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-E94CEB6F4708FB7C23148611494795310"> 
         <ds:Transforms> 
          <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> 
           <ec:InclusiveNamespaces PrefixList="dz xsd" 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>mlABQuNUFOmLqsDswxXxQ6XnjpQ=</ds:DigestValue> 
        </ds:Reference> 
       </ds:SignedInfo> 
       <ds:SignatureValue>lYhBHSQ/L...XL1HEbMQjJ/Q2Rvg==</ds:SignatureValue> 
       <ds:KeyInfo Id="KI-E94CEB6F4708FB7C2314861149479518"> 
        <wsse:SecurityTokenReference wsse11:TokenType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1" wsu:Id="STR-E94CEB6F4708FB7C2314861149479519" xmlns:wsse11="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd"> 
         <wsse:Reference URI="#X509-E94CEB6F4708FB7C2314861149479517" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1"/> 
        </wsse:SecurityTokenReference> 
       </ds:KeyInfo> 
      </ds:Signature> 
     </wsse:Security> 
    </soap:Header> 
    <soap:Body wsu:Id="id-E94CEB6F4708FB7C23148611494795310" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
     <dz:query> 
      <dz:param> 
       <xsd:userQueryId>27467</xsd:userQueryId> 
      </dz:param> 
     </dz:query> 
    </soap:Body> 
</soap:Envelope> 

Ich habe meine Anfrage senden Schöpfer zu bedienen und er bestätigt, dass alles was ich brauche ist, dass EncodingType Attribut in Nonce

Antwort

0

Das EncodingType-Flag entspricht der WSSE-Benutzernamen- und Token-Sicherheitsspezifikation 1.1. Dies ist die Spezifikation, die von der Version des Apache CXF-Frameworks für diese Version benötigt wird s verwendet Java Web Service. .NET erfüllt diese Spezifikation nicht. Zum Glück gab es eine Flagge in CXF, um die Anforderung abzuschalten. Wir haben das gemacht und können jetzt kommunizieren.

+0

Vielen Dank für die Antwort, leider kann ich WS nicht ändern, weil es von einer externen Firma geliefert wird und sie sich geweigert haben, diese Anforderung abzuschalten. – Misiu

Verwandte Themen