Newsgroup: it.comp.java
Titolo: Si può condividere la sessione tra client di webservices?

Salve lettori del NG,
volevo sottoporvi un problema ke non riesco a risolvere semplicemente:
--problema--
ho due client di webservices ("login" e "servizio2" di una web application
asp.net
) in un'applicazione java: il primo effettua una login e instaura una
sessione con il server, il secondo dovrebbe usare il servizio2 sfruttando la
sessione già creata con "login", ma come fare a passargli la sessione?
--dettagli--
l'applicazione 
asp.net
 che espone i due webservices ("login" e "servizio2")
utilizza i cookie per identificare la sessione (secondo il meccanismo di
autenticazione "Forms" e protezione "All", in pratica scambia cookie con
dati crittografati e validati); ma posso al limite togliere il problema
della crittografia e validazione.
--soluzione semplice?--
in c# è sufficiente che due client di webservice si passino l'oggetto
System.Net.CookieContainer... possibile che non esistano librerie java con
classi analoghe?
--soluzione alternativa limitata--
ho trovato sul web una soluzione che spiega come scrivere un cookie nello
stub per il secondo webservice:
[MyServiceLocator locator = new MyServiceLocator();
 MyService service = locator.getMyService();
 ((javax.xml.rpc.Stub)service)._setProperty(HTTPConstants.HEADER_COOKIE,
"ASP.NET_SessionId=" + *session*);]
ed il *session* da scrivere lo potrei ottenere dal webservice "login"; ma
non so se è giusto scrivere il cookie semplicemente come "ASP.NET_SessionId=
#session;" e comunque resta tutto non crittografato.
spero che qualcuno mi possa aiutare,
grazie a chi risponderà

 sessione già creata con "login", ma come fare a passargli la sessione?
La butto lì, senza pensare a problemi di sicurezza: passare solo un id di
sessione, che client / server si scambiano ?
Scorpio.

 sessione, che client / server si scambiano ?
Una soluzione simile l'avevo prospettata, ma il problema era che nei web
services non sapevo come fare a scrivere il cookie; ho trovato una soluzione
che li legge e li scrive e che lascio per chi avesse il problema in futuro.
Non ho potuto verificarla perché mi sono ritrovato un problema all'origine
nella creazione di una singola sessione, che ho postato nel msg con oggetto
<<Sessione con un webservice 
asp.net
 con "authorization cookie"
impossibile?>>.
--codice condivisione cookie (e sessione)--
...
import org.apache.axis.transport.http.HTTPConstants;
import org.apache.axis.client.Call;
...
// Standard binding client *service*  con maintain session
Service1Locator service1Locator=new Service1Locator();
Service1SoapBindingStub
service=(Service1SoapBindingStub)service1Locator.getService1();
service1Locator.setMaintainSession(true);
service.foo();
// Lettura del cookie
Call authCall = service1Locator.getCall();
org.apache.axis.MessageContext msgContext = authCall.getMessageContext();
String cookie = msgContext.getStrProp(HTTPConstants.HEADER_COOKIE);
// Standard binding client *service2* ancora con mantain session
Service2Locator service2Locator=new Service2Locator();
Service2SoapBindingStub
service2=(Service2SoapBindingStub)service2Locator.getbusinessUnitService();
service2Locator.setMaintainSession(true);
// Scrittura del cookie ottenuto dal primo client *service*
service2._setProperty(HTTPConstants.HEADER_COOKIE,cookie);
service2.bar();