Sono riuscito a far funzionare la chiamata da porta delegata Oracle verso una
porta applicativa OpenSPCoop facendo una modifica al server-config.wsdd con
queste
Modifiche:
1)Inserendo nella <globalConfiguration>
<parameter name="enableNamespacePrefixOptimization" value="false"/>
Altrimenti veniva alterato il tag "Timestamp" in modo da invalidare la firma.
2)Estendendo la classe WSDoAllReceiver con una nuova classe
WSDoAllReceiverNoActionOrderCheck che disabilita il controllo sull'ordine dei
tag
WSS (Oracle e Microsoft inviano prima il Timestamp mentre WSS4J lo mette in
coda all'header WS-Security).
Questa modifica richiede una piccola risistemazione delle required_libs (Andrea
te le mando in uno zip da mettere su CVS per non intasare la lista) per
compilare.
La prima modifica non funziona però nel verso contrario "porta delegata
OpenSPCoop" --> "porta applicativa Oracle" ed infatti sniffando quello che
passa in rete e quello che arriva a WSSReceiver si nota che mentre da Oracle
arriva:
<wsu:Timestamp
Al modulo WSSReceiver arriva
<Timestamp e quindi il digest sull' elemento diventa invalido.
In pratica sembra che la porta delegata ignora i parametri di
server-config.wsdd.
Come posso impostare la proprietà enableNamespacePrefixOptimization a false per
la porta delegata?
P.S.
Sono a buon punto anche con la porta delegata Microsoft vs porta applicativa
OpenSPCoop.
Ciao
Luciano
-----Messaggio originale-----
Da: sviluppatori-bounces@openspcoop.org
[mailto:sviluppatori-bounces@openspcoop.org] Per conto di Montebove Luciano
Inviato: giovedì 25 maggio 2006 17.21
A: sviluppatori@openspcoop.org
Oggetto: [OpenSPCoop-Dev] WSS: gestione mustUnderstand="1" & stato
interoperabilità
1)Nel caso in cui nell'header WS-Security venga impostato, da una porta
delegata (nello specifico mi è capitato con la porta delegata Microsoft) ,
l'attributo mustUnderstand="1" e non sia presente l'"actor" l'architettura che
abbiamo implementato nella gestione della WS-Security manda in errore Axis
perché pensa che debba gestire l'header WS-Security.
L'Handler Axis allegato, da inserire in testa al servizio di porta applicativa
permette di bypassare il problema segnalando come "processed" l' header WSS.
Se ne può provare l'efficacia configurando la WS-Security di una porta delegata
senza actor e con mustUnderstand="true".
2a)Porta di dominio Oracle. Ho cercato di testarla in entrambi i versi ma sono
arenato al fatto che il processo di controllo della firma si blocca perché il
digest calcolato da WSS4J sul tag "Timestamp" di WS-Security è diverso da
quello calcolato da Oracle. La cosa strana è che i digest su "Body" ed
"Intestazione" coincidono e gli algoritmi sono sempre gli stessi in teoria.
Qualche idea su come calcolare il digest in altro modo per capire chi ha
ragione?
2b)orta di dominio Microsoft. Ho provato per ora solo il verso PD Microsoft ->
PA OpenSPCoop ma dopo aver risolto il problema del punto 1) sul
"mustUnderstand", sono fermo ad un fallimento del controllo della firma.
Ciao
Luciano
|