Oppure

Loading
01/09/06 10:10
trastevere123
Buongiorno a tutti sono un principiante per cui andateci piano con me ;) avrei una domanda da farvi.

Io avrei intenzione di utilizzare gli standard della WS-Security messi a disposizione dal framework WSS4J. Il problema è che la documentazione è scarsa o perlomeno non chiaramente fruibile da un principiante quale io sono...

Bene l'idea è questa:

- Deploying del serizio :k: fatto
- Costruzione del Client :k: fatto
- Installazione dei jar di wss4j sotto axis :k: fatto
- modifica del client per ricevere e inviare XML criptato :( alto mare :-?:-?:-?


Il discorso è che per ora i messaggio soap vengono protetti a livello di trasporto con https negoziato a due vie ma il mio scopo è quello di agire a livello SOAP...

Se qualche anima nobile mi potesse dare una mano le sarei grata...Io sono proprio senza idee...

Grazie, ciao!
aaa
06/09/06 7:56
trastevere123
Ok vi aggiorno sui progressi sperando che qualcuno mi possa aiutare o perlomeno rispondermi :(


Sono riuscito tramite WSS4J ad inserire lo username token sul SOAP adesso si tratta di crittare e firmare il messaggio.

Ho cstruito il client che si appoggia agli stub creati da wsdl2java

package prova2.client;

import java.rmi.RemoteException;

import javax.xml.rpc.ServiceException;

import org.apache.axis.EngineConfiguration;
import org.apache.axis.configuration.FileProvider;

/*
 * import opzionali per la dichiarazione del file di configurazione client
 * all'interno della classe
 */


// import prova.client.SalutoServiceLocator;
// import prova.client.SalutoService;

public class ClientSaluto {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		/*
		 * in alterinativa alla seguente soluzione è possibilie utilizzare
		 * java -Daxis.ClientConfigFile=
		 * C:\Programmi\Apache\Tomcat_5_0\webapps\axis\WEB-INF\classes\prova\prova\client\client_deploy.wsdd
		 */
		
		EngineConfiguration config = new FileProvider("C:\Programmi\Apache\Tomcat_5_0\webapps\axis\WEB-INF\classes\prova2\prova2\client\client_deploy.wsdd");

		/*
		 * locator è di tipo "interfaccia RPC" del servizio. Viene creata una
		 * nuova istanza stub del servizio che ne permette la localizzazione
		 */
		//SalutoService locator = new SalutoServiceLocator();
		SalutoService locator = new SalutoServiceLocator(config);

		Saluto service; // interfaccia RMI creata a partire dal PortType

		try {

			service = locator.getSaluto2();
			String reply;

			reply = service.saluto("Nicola");
			System.out.println("IL WEB SERVICE HA RISPOSTO: " + reply);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}



ed il seguente file di configurazione client_deploy.wsdd

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender"/>
	<globalConfiguration >
	   <requestFlow>
  		<handler type="java:org.apache.ws.axis.security.WSDoAllSender" >
    	<parameter name="user" value="16c73ab6-b892-458f-abf5-2f875f74882e"/>
    	<parameter name="passwordCallbackClass" value="org.apache.ws.axis.oasis.PWCallback"/>
    	<parameter name="action" value="Signature Encrypt"/>
    	<parameter name="signaturePropFile" value="crypto.properties" />
  		</handler>
	   </requestFlow>
	</globalConfiguration >
</deployment> 


tutto ciò l'ho fatto seguendo lo scarno tutorial ufficiale ws.apache.org/wss4j/…


il problema che facendo il run mi esce
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: java.lang.RuntimeException: CryptoFactory: Cannot load properties: crypto.properties
 faultActor: 
 faultNode: 
 faultDetail: 
	{http://xml.apache.org/axis/}stackTrace:java.lang.RuntimeException: CryptoFactory: Cannot load properties: crypto.properties
	at org.apache.ws.security.components.crypto.CryptoFactory.getProperties(CryptoFactory.java:185)
	at org.apache.ws.security.components.crypto.CryptoFactory.getInstance(CryptoFactory.java:110)
	at org.apache.ws.security.handler.WSHandler.loadSignatureCrypto(WSHandler.java:337)
	at org.apache.ws.security.handler.WSHandler.doSenderAction(WSHandler.java:123)
	at org.apache.ws.axis.security.WSDoAllSender.invoke(WSDoAllSender.java:170)
	at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
	at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
	at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
	at org.apache.axis.client.AxisClient.invoke(AxisClient.java:127)
	at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
	at org.apache.axis.client.Call.invoke(Call.java:2767)
	at org.apache.axis.client.Call.invoke(Call.java:2443)
	at org.apache.axis.client.Call.invoke(Call.java:2366)
	at org.apache.axis.client.Call.invoke(Call.java:1812)
	at prova2.client.Saluto2SoapBindingStub.saluto(Saluto2SoapBindingStub.java:106)
	at prova2.client.ClientSaluto.main(ClientSaluto.java:49)

	{http://xml.apache.org/axis/}hostname:Chianti

java.lang.RuntimeException: CryptoFactory: Cannot load properties: crypto.properties
	at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
	at org.apache.axis.client.AxisClient.invoke(AxisClient.java:216)
	at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
	at org.apache.axis.client.Call.invoke(Call.java:2767)
	at org.apache.axis.client.Call.invoke(Call.java:2443)
	at org.apache.axis.client.Call.invoke(Call.java:2366)
	at org.apache.axis.client.Call.invoke(Call.java:1812)
	at prova2.client.Saluto2SoapBindingStub.saluto(Saluto2SoapBindingStub.java:106)
	at prova2.client.ClientSaluto.main(ClientSaluto.java:49)
Caused by: java.lang.RuntimeException: CryptoFactory: Cannot load properties: crypto.properties
	at org.apache.ws.security.components.crypto.CryptoFactory.getProperties(CryptoFactory.java:185)
	at org.apache.ws.security.components.crypto.CryptoFactory.getInstance(CryptoFactory.java:110)
	at org.apache.ws.security.handler.WSHandler.loadSignatureCrypto(WSHandler.java:337)
	at org.apache.ws.security.handler.WSHandler.doSenderAction(WSHandler.java:123)
	at org.apache.ws.axis.security.WSDoAllSender.invoke(WSDoAllSender.java:170)
	at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
	at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
	at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
	at org.apache.axis.client.AxisClient.invoke(AxisClient.java:127)
	... 7 more


ho capito che il problema sta nella gestione dei certificati però non ho trovato documentazione a riguardo...Qualcuno può darmi una mano!? Aiutoooooooooooooooooo
aaa