Newsgroup: it.comp.java
Titolo: Tomcat: condividere l'autenticazione fra due diverse applicazioni web

Ciao,
    qualcuno di voi sa se e' possibile condividere l'autenticazione fra due applicazioni
web? Cioe', supponiamo che io sotto /webapps abbia due applicazioni, alfa e beta, che ci
tengo a deployare separatamente per una piu' semplice manutenzione. Posso fare in modo che
quando un utente si autentichi su alfa tale autenticazione venga acquisita anche per beta,
evitando che l'utente si trovi a fare un doppio login? Ci sono possibilita' di farlo senza
scrivere codice e quindi senza scrivere l'ennesimo RealmProvider?
Grazie in anticipo,
    Bruno.
 
---
| Bruno Bossola 
| A Java Software Engineer :-)
| 
http://digilander.iol.it/bbossola
|
| (rimuovere gli spazi dall'indirizzo per rispondere via email)

     Bruno.
Uhm.. Non so se si possa fare con Tomcat (non lo guardo da un po' e la
4.x non l'ho mai usata); con resin c'era la possibilità di inserire un
oggetto in un contesto accessibile da tutte le webapp; (ad esempio un
datasource),
io avevo inserito una  hashtable  che associava alla sessionId
(essendo tutto nello stesso dominio, il cookie con la sessionID era
uguale) un bean contenente le informazioni sulla login, controllandola
dalle webapp  potevo gestire le login su tutte le webapp.
So che è un accrocchio, ma ai tempi era la soluzione migliore che
avessimo per integrare le webapp con il meccanismo di login del
cliente.
Spero di esserti stato utile.
Ciao,
   Rob

 datasource),
Anche in Tomcat si puo' fare: basta definire da JSP un Bean che abbia scope
"application" e questo oggetto restera' accessibile  fino al restart del
server stesso. Potresti usare uno di questi oggetti per per memorizzare le
info sulla login di un'utente e effettuare i controlli del caso per vedere
se e' gia' stata effettuata una login.


Uhm... lo scope "application" lo rende visibile solo per quella applicazione, a me serve
che sia trasversale a piu' applicazioni. Inoltre non vorrei scrivere del codice e
modificare le applicazioni "figlie", ma semplicemente dirgli di "ereditare"
l'autenticazione da quella fatta dal padre.
Cioe', se io ho un'applicazione "area clienti" cui si autenticano i clienti vorrei che le
applicazioni che ci girano sotto (deployate regolarmente con un bel war) "ereditino"
l'eventuale login effettuata all' "area clienti".
"Sito web"
  |
  -- "area clienti"
       |
       -- "fatturazione"
       |
       -- "servizi"
 
Sia "fatturazione" che "servizi" sono due applicazioni web (war) separati che io vorrei
ereditassero l'autenticazione effettuata sull'area clienti. Non voglio pero' modificare il
codice di tali applicazioni, ma semplicemente fruire delle informazioni di autenticazione.
Ciao,


 codice di tali applicazioni, ma semplicemente fruire delle informazioni di autenticazione.
Uhm.. con che meccanismo avviene l'autenticazione nelle 2 applicazioni?
Se ti è noto potresti cercare di ingannarle con delle pagine di
passaggio e dei bean.
Ciao,
    Rob


Il problema e' che non voglio toccare le applicazioni, voglio semplicemente poterle
"raggruppare" logicamente, in modo paritetico o gerarchico, in modo che l'autenticazione
venga condivisa. 
La tua soluzione come funzionerebbe?
Ciao,
    Bruno.
P.S.
Nel frattempo, rassegnati, stiamo lavorando sulla soluzione basata sui RealmProvider e
sembra che la stia andando in porto. In pratica consta nell'inserimento sotto il server
J2EE (tomcat, in questo caso) di un sistema di autenticazione alternativo nel quale si
puo' configurare la logica di "raggruppamento" che serve.


 puo' configurare la logica di "raggruppamento" che serve.
Uhm.. sinceramente non ho mai usato i RealmProvider; probabilmente è la 
soluzione ottimale seguendo le specifiche.
Ciao,
	Rob


Mah? Mi sa di no, ho il dubbio che solo con Tomcat funge in quanto e' un dettaglio
implementativo del server. Il vantaggio e' che mi consente di non toccare i war
dell'applicazione e di interagire solo con l'application server, ma ho idea che non sia
cosi' standard come sembra... Boh! Per ora vado cosi', poi vedremo. Se la cosa funge
posteremo magari il codice da qualche parte in modo che qualche altro sfortunato lo possa
provare :-)
Ciao e grazie,
    Bruno.


<bbossola @ 
hotmail.com
 (Bruno Bossola)> ha scritto nel messaggio
news:3d3c14db...@news.inet.it...

Tratto dal file di configurazione server.xml":
        <!-- Normally, users must authenticate themselves to each web
app
             individually.  Uncomment the following entry if you would
like
             a user to be authenticated the first time they encounter
a
             resource protected by a security constraint, and then
have that
             user identity maintained across *all* web applications
contained
             in this virtual host. -->
        <Valve
className="org.apache.catalina.authenticator.SingleSignOn"
                   debug="0"/>
Penso che faccia al tuo caso.
Ciaaaaooo...


... di Tomcat 4.x, noi usiamo la 3.x. Sorry, avrei dovuto precisare :-)
Ciao e grazie,
