Web services, sicurezza e Axis2

Ultimamente mi sono addentrato nel mondo della sicurezza dei web services. Nel progetto in cui lavoro viene usato Axis2 come container per i web services. Axis2 ha una struttura modulare che permette di aggiungere moduli che implementano le specifiche WS, parliamo in tal caso di WS-Security e WS-SecurityPolicy e WS-Policy gestite dal modulo Rampart.

Occorre subito dire che i moduli sono legati alle versione di Axis2 e quindi abbiamo Rampart 1.3 basato su Axis2 1.3 mentre Rampart 1.4 con Axis2 1.4.

In particolare in azienda stiamo usando WSO2 Esb che è appunto un Enterprise Service Bus ovvero permette di definire politiche di routing e filtering tra i web services.

Piccola nota: per quello che ne so non è il massimo in quanto non è conforme allo standard JBI che altri esb rispettano.

WSO2 Esb è basato su Apache Synapse e integra tra l’altro Axis2 con Rampart offrendo una carina interfaccia web dove è possible creare sequenze di web services e filtri.

La versione che fino ad ora abbiamo usato è la 1.6 che si basa su Axis2 1.3 e di conseguenza Rampart 1.3 mentre la versione 1.7 è passata su Axis2 1.4.

L’interfaccia web permette di aggiungere sicurezza nella connessione tra 2 web services grazie all’upload del file che ne specifica le policy ovvero che indica, secondo le speficiche, quali parti del messaggio vengono firmate e criptate più una serie di opzioni.

Di solito avreste bisogno di criptare solo il corpo del messaggio, il cosiddetto SOAP body ma le specifiche indicano che è possible specificare alcune parti dell’header. Questo è al momento per me importante perchè nel progetto è stato definito un header customizzato da aggiungere nei messaggi trasmessi. Fatto sta che ho scoperto che Rampart genera un NullPointerException quando si indica una qualunque parte dell’header e quindi si riesce solo a criptare solo il body.

Non so ancora se la versione successiva, Rampart 1.4, abbia risolto questo bug ma me lo auguro di cuore, devo anche dire che qualora lo risolvesse non è poi il massimo in quanto il progetto fino ad ora si è basato sulla versione 1.3 di Axis2 ed è seccante fare un cambiamento di versione mentre il progetto va avanti.

Alla prossima (sperando aver trovato la soluzione)

Aggiornamento:

Alla fine ho migrato alla versione successiva: Axis2 1.4. Nonostante quel bug sia risolto ne esiste almeno un altro a cui sto girando attorno. Un requisito importante è che ho scoperto che WCF (dal lato .NET) supporta solo le specifiche WS-SecurityPolicy 1.2 significa che, a livello di interoperabilità, sono costretto ad usare Axis2 1.4 poichè il precedente non supporta queste specifiche.

Ora tutto ciò comporta che stub e skeleton vanno rigerenerati e vanno aggiornate le versioni di WSO2 Esb e Application Server, speriamo bene.

Advertisements

MOCA 2008

Sta per iniziare l’hacker camp Metro Olografix CAmp che si protae dal 21 al 24 Agosto 2008 presso il Parco “ex Caserma Di Cocco” (Pescara).

Al camp si affronteranno diverse tematiche, molte relative alla sicurezza come TOR, OS X, crittografia, VOIP, OpenWRT e tutto cio’ che ruota al wireless.

Il camp vanta qualche partner come l’Italian Linux Society e Antifork !

Buon campeggio!