Home > Azure, Cloud, Developer, GestPay, Security, Sicurezza, Sviluppo, Technical post > Why GestPay of Banca Sella can’t be used in Azure e-commerce solution ?

Why GestPay of Banca Sella can’t be used in Azure e-commerce solution ?

Da circa un mese sto costruendo una soluzione di e-commerce basata su Windows Azure.

La scelta di portare nel cloud usa soluzione di e-commerce è dettata da due fondamentali motivazioni:

1) la prima è che l’organizzazione per la quale sto realizzando la soluzione non ha una struttura IT che possa permettersi di tenere “on premises” la soluzione e monitorarla in maniera adeguata;

2) la seconda è che Azure permette di gestire in maniera molto flessibile risorse ridondate che consentono di aumentare il numero di istanze della web app o di diminuirle fino a zero qualora il prodotto venduto non dovesse avere l’appeal necessario per i clienti, il tutto senza fare ingenti investimenti per lo start-up ma pagando solo un modesto canone di utilizzo (pay-per-use).

La scelta del cloud mi ha portato alla soluzione PaaS (Platform as a Service) di Windows Azure.

La soluzione, poiché si propone di vendere un servizio in abbonamento, non necessita di connessione ad un partner che si occupi della logistica e del delivery di prodotti ma solo di un partner che si faccia carico delle transazioni finanziarie.

La scelta iniziale del partner è ricaduta su quello forse più famoso in Italia come piattaforma per transazioni con carta di credito su siti di e-commerce ossia Banca Sella con il suo prodotto specifico denominato GestPay.

Dopo aver realizzato la soluzione di test ed aver fatto il deploy su Azure, sono trascorsi veramente pochi giorni prima di impattare nel problema che risponde alla domanda del titolo e che ora andrò a descrivere.

La prima parte del problema è questa: quando si effettua il deploy di una Web App su Windows Azure, dopo aver scelto l’alias della Web App ossia il nome con cui la mia applicazione sarà raggiungibile su internet, il pacchetto composto da Service e Model viene inviato al Web Portal. Quest’ultimo passa il Model al Fabric Controller, copia il Service su 3 istanze dei web servers nel Datacenter per ridondanza, assegna un VIP – Virtual IP alle tra istanze della web application ed associa sul DNS l’alias scelto in precedenza con il VIP ottenuto dal dhcp. In grafica

azure_deployment

Ovviamente Microsoft per garantire un servizio del genere ad una moltitudine di clienti ha assegnato dei range di indirizzi IP per ogni Datacenter da utilizzare per assegnare il VIP inoltre il Virtual IP non è fisso ma cambia nel tempo perché è il DNS che si preoccupa di mantenere sempre allineato l’alias scelto con il VIP temporaneamente assegnato alle istanze della mia applicazione.

I range di indirizzi IP assegnati ai vari Datacenter di Azure sono disponibili qui

Windows Azure Datacenter IP Ranges

e, in particolare, quelli per il Datacenter di Amsterdam che corrisponde alla zona denominata Europa Occidentale sono i seguenti:

<subregion name=”West Europe”>
<network>157.55.10.0/27</network>
<network>157.55.10.32/27</network>
<network>157.55.10.64/26</network>
<network>157.55.12.0/28</network>
<network>157.55.9.112/28</network>
<network>137.116.192.0/21</network>
<network>137.116.200.0/21</network>
<network>157.55.8.128/28</network>
<network>157.55.8.144/28</network>
<network>157.55.8.160/28</network>
<network>157.55.8.64/26</network>
<network>168.63.0.0/19</network>
<network>168.63.96.0/19</network>
<network>213.199.128.0/21</network>
<network>213.199.136.0/22</network>
<network>213.199.180.112/28</network>
<network>213.199.180.192/26</network>
<network>213.199.180.32/28</network>
<network>213.199.180.96/28</network>
<network>213.199.183.0/24</network>
<network>65.52.128.0/19</network>
<network>94.245.97.0/24</network>
<network>137.117.128.0/17</network>
<network>168.61.56.0/21</network>
</subregion>

mentre quelli per il Datacenter di Dublino che corrisponde alla zona denominata Europa del Nord sono i seguenti:

<subregion name=”North Europe”>
<network>213.199.160.0/20</network>
<network>213.199.184.0/21</network>
<network>137.116.224.0/19</network>
<network>157.55.230.160/27</network>
<network>157.55.3.0/24</network>
<network>168.61.80.0/20</network>
<network>168.61.96.0/19</network>
<network>168.63.32.0/19</network>
<network>168.63.64.0/20</network>
<network>168.63.80.0/21</network>
<network>168.63.92.0/22</network>
<network>65.52.224.0/22</network>
<network>65.52.228.0/22</network>
<network>65.52.248.0/21</network>
<network>65.52.64.0/20</network>
<network>94.245.104.0/21</network>
<network>94.245.112.0/20</network>
<network>94.245.88.0/21</network>
<network>137.116.224.0/19</network>
<network>157.55.230.160/27</network>
<network>157.55.3.0/24</network>
<network>168.61.80.0/20</network>
<network>168.61.96.0/19</network>
<network>168.63.32.0/19</network>
<network>168.63.64.0/20</network>
<network>168.63.80.0/21</network>
<network>168.63.92.0/22</network>
<network>65.52.224.0/22</network>
<network>65.52.228.0/22</network>
<network>65.52.248.0/21</network>
<network>65.52.64.0/20</network>
<network>94.245.104.0/21</network>
<network>94.245.112.0/20</network>
<network>94.245.88.0/21</network>
<network>137.135.128.0/17</network>
</subregion>

Come potete vedere sono parecchi e senza dimenticare la possibilità di ridondare il servizio su Datacenter lontani in America o in Asia.

La seconda parte del problema è quella che ci mette Banca Sella, la quale, adducendo improbabili motivi di sicurezza stabilisce che l’indirizzo ip pubblico dal quale il sito di e-commerce contatta il server di GestPay deve essere registrato nella configurazione di base dell’esercente del negozio virtuale utilizzando questa pagina

gespay_ip

dove, come si può vedere, posso inserire al massimo 10 indirizzi ip o meglio 10 sottoreti di indirizzi ip di classe C se utilizzo la wildcard * al posto dell’ultimo ottetto.

A questo punto è evidente che, se il VIP della mia applicazione su Azure può prendere dinamicamente un indirizzo ip appartenente ad un numero maggiore di range rispetto a quelli che posso definire nella pagina di configurazione di GestPay mostrata qui sopra, si otterrà prima o poi un fallimento nelle transazioni.

La soluzione sarebbe semplice se GestPay consentisse di definire l’alias del sito di e-commerce e non l’ip ma purtroppo così non è.

E’ stato inutile obiettare che,

  • essendo basate su stringhe criptate le comunicazioni tra web server del sito di e-commerce e server di GestPay
  • e potendo le transazioni generate solo immettere somme sul conto dell’esercente e non prelevarle,

era una precauzione inutile dover impostare come fissi gli indirizzi ip del sito di e-commerce quando poteva essere sufficiente definire l’alias…

… ma ovviamente Banca Sella non può adeguare così rapidamente il suo sistema all’evoluzione del cloud targato Microsoft quindi può solo essere il partner di commercianti virtuali che hanno il negozio “on premises” o in server farm con un indirizzo ip ben definito.

Alla prossima.

  1. Non c'è ancora nessun commento.
  1. No trackbacks yet.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: