locked
WSDL PolicyReference - C# .NET SOAP client with WS-Security - JAVA Backend with CXF RRS feed

  • Domanda

  • Buongiorno,

    devo implementare un client in C# per consumare un web service SOAP realizzato con tecnologie JAVA e che utilizza la WS-SECURITY per l'autenticazione.

    Il gestore ha fornito i file WSDL/XSD che ho provveduto ad importare (add service reference) in .NET visual studio 2012 framework 4.5 per generare le classi da utilizzare per il client.

    Dopo vari tentativi senza successo e diverse richieste di aiuto in vari forum (https://social.msdn.microsoft.com/Forums/it-IT/9c305faf-8e45-4540-8f1d-a2b0d4902701/invoking-java-webservice-from-cnet-using-tls-12-wssecuritysamlclient-x509-certificate?forum=wcfwfit) mi sta venendo qualche dubbio che in visual studio vengano ignorate le "PolicyReference" contenute in un file esterno "policy-X509v3.xml" referenziato nel file WSDL di cui riporto un frammento:

    <wsdl:binding name="xxxxBinding0001" type="tns:xxxxPortType0001">
        <wsdlsoap:binding transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="rispondiAllaRichiesta">
          <wsdlsoap:operation soapAction="" />
          <wsdl:input>
            <wsp:PolicyReference xmlns:wsp="http://www.w3.org/ns/ws-policy" URI="policy-X509v3.xml" />
            <wsdlsoap:body use="literal" />
          </wsdl:input>
          <wsdl:output>
            <wsdlsoap:body use="literal" />
          </wsdl:output>
        </wsdl:operation>
      </wsdl:binding>

    Come posso essere sicuro che le classi client generate dal client rispettino le "PolicyReference" contenute nel file esterno "policy-X509v3.xml" ? C'è qualche altro modo di procedere/importare WSDL di questo tipo?

    Grazie

    martedì 2 gennaio 2018 11:32

Tutte le risposte

  • A supporto del dubbio che ho espresso sopra, riporto l'avviso che compare in .NET quando provo ad aggiungere/aggiornare il riferimento al servizio WSDL:

    Avviso dello strumento personalizzato:

    Un riferimento criteri è stato ignorato perché i criteri con ID 'policy-X509v3.xml' non sono stati trovati. XPath://wsdl:definitions[@targetNamespace='http://...0001XService']/wsdl:binding[@name='xxxxxBinding0001']/wsdl:operation[@name='rispondiAllaRichiesta']/wsdl:input

    Premetto che il file "policy-X509v3.xml" si trova nella stessa cartella del WSDL.

    Quindi, dovrebbe essere corretto referenziarlo con percorso relativo:

    URI="policy-X509v3.xml" 

    Comunque, ho fatto diverse prove mettendo nell'URI il percorso assoluto ed anche quello su IIS in localhost. Il risultato è sempre lo stesso. Non è che bisogna metterlo in qualche altra cartella di .NET ? Oppure c'è qualche opzione di configurazione da impostare?

    venerdì 5 gennaio 2018 11:16
  • Qualcuno può aiutarmi a configurare il binding da codice ? Questo è il file "policy-X509v3.xml":

    <wsp:Policy wsu:Id="AsymmBinding"
    	xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
    	xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
    	<sp:AsymmetricBinding>
    		<wsp:Policy>
    			<sp:InitiatorSignatureToken>
    				<wsp:Policy>
    					<sp:X509Token
    						sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
    						<wsp:Policy>
    							<!-- <sp:RequireThumbprintReference /> -->
    							<sp:RequireEmbeddedTokenReference />
    							<sp:WssX509V3Token10 />
    						</wsp:Policy>
    					</sp:X509Token>
    				</wsp:Policy>
    			</sp:InitiatorSignatureToken>
    			<sp:RecipientSignatureToken>
    				<wsp:Policy>
    					<sp:X509Token
    						sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToInitiator">
    						<wsp:Policy>
    							<!-- <sp:RequireThumbprintReference /> -->
    							<sp:RequireEmbeddedTokenReference />
    							<sp:WssX509V3Token10 />
    						</wsp:Policy>
    					</sp:X509Token>
    				</wsp:Policy>
    			</sp:RecipientSignatureToken>
    			<sp:IncludeTimestamp />
    			<sp:AlgorithmSuite>
    				<wsp:Policy>
    					<sp:Basic128Rsa15 />
    				</wsp:Policy>
    			</sp:AlgorithmSuite>
    			<sp:Layout>
    				<wsp:Policy>
    					<sp:Strict />
    				</wsp:Policy>
    			</sp:Layout>
    		</wsp:Policy>
    	</sp:AsymmetricBinding>
    	<sp:SignedSupportingTokens>
    		<wsp:Policy>
    			<sp:SignedParts>
    				<sp:Body />
    				<sp:Header Name="Timestamp"
    					Namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" />
    			</sp:SignedParts>
    		</wsp:Policy>
    	</sp:SignedSupportingTokens>
    	<sp:Wss10>
    		<wsp:Policy>
    			<sp:MustSupportRefKeyIdentifier />
    			<sp:MustSupportRefIssuerSerial />
    			<sp:MustSupportRefThumbprint />
    			<sp:MustSupportRefEncryptedKey />
    			<sp:RequireSignatureConfirmation />
    		</wsp:Policy>
    	</sp:Wss10>
    </wsp:Policy>

    lunedì 8 gennaio 2018 09:19