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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s