Nel corso degli ultimi anni, il tema che più di ogni altro ha avuto risalto è la sicurezza. Quando si sviluppano applicazioni questo deve essere uno dei pilastri da cui partire. La stessa cosa vale quando si realizzano servizi con WCF. In questo articolo, vediamo quindi come è stato affrontato il tema Security all'interno di WCF.
Introduzione
Quando si comincia a progettare un servizio, la prima cosa che si deve tenere in mente è la sicurezza. Sotto questo punto di vista sono molti gli scenari ed i rischi che si devono analizzare.
Come caso d'uso, si può prendere in considerazione un negozio on line per la vendita di libri, cd musicali, dvd, ecc. L'utente scarica il catalogo sul client, seleziona gli articoli e li aggiunge al proprio carrello per poi procedere al pagamento. In quest'ultima fase, un hacker potrebbe "osservare" il traffico riuscendo a rubare username e password e, nel peggiore dei casi, il numero della carta di credito. Non solo, può accadere che tramite alcuni attacchi, dei malintenzionati possano agire al posto del servizio intercettando tutte le richieste ed immagazzinando i dati sensibili, ingannando il client.
Un altro tipo di attacco, prevede l'intercettazione e la modifica dei dati che l'utente manda al servizio, quindi, nel caso in esame, un utente potrebbe richiedere la spedizione di un film al suo recapito, ma non vederselo mai consegnare perché qualcuno ha modificato l'indirizzo prima che questo raggiungesse il server. Per estremo, un utente piazza un ordine una sola volta, ma il rischio che corre è di vedersi recapitare a casa lo stesso ordine per 10 volte, con 10 pagamenti. Questo può accadere perché, chi si mette tra l'utente ed il servizio potrebbe rubare i dati dell'ordine e replicarlo tutte le volte che vuole.
Analizzando questa serie di attacchi a cui si può essere soggetti, emerge la necessità di avere un sistema di sicurezza che si occupa di garantire l'autenticità del client e del server in comunicazione, (intercettando così le intromissioni), l'integrità e il criptaggio dei dati (così che non possano essere visibili o alterati a malintenzionati) e il riconoscimento di richieste già effettuate (così che non possa essere ripetuta più di una volta la stessa richiesta). L'insieme di questi controlli è alla base del sistema di sicurezza su cui WCF si poggia. Più precisamente, la sicurezza di WCF si suddivide in 3 sezioni: Transfer Security, Access Control o Authorization e Auditing.
Transfer Security
La Transfer Security è quella parte di WCF che si occupa dell'integrità, della confidenzialità, e dell'autenticazione dei dati tra client e server. WCF ha al suo interno due meccanismi disponibili di Transfer Security: TransportMode e MessageMode.
Il primo è il meccanismo più diffuso e prevede che già il livello di protocollo di trasferimento dati sia sicuro, utilizzando ad esempio SSL. Infatti, SSL garantisce la crittografia e la confidenzialità dei dati tramite il meccanismo di chiave privata/pubblica. L'autenticazione può avvenire attraverso il meccanismo di username/password o attraverso un certificato digitale. Il TransportMode ha il grande vantaggio di essere molto performante rispetto alla sua alternativa, ma presenta grossi svantaggi: di non essere Cross-Platform ed essere solo point-to-point e non end-to-end. Questo significa che se un messaggio deve arrivare ad un servizio passando per più server, il TransportMode garantisce i dati solo nel tratto tra chi spedisce il messaggio ed il primo server che lo riceve, ma non gli altri passaggi. A causa di questa importante limitazione, in molte casistiche il TransferMode risulta inutilizzabile e si ricorre all'utilizzo del MessageMode.
Il MessageMode prevede che sia il messaggio stesso a criptare le proprie informazioni senza affidarsi al canale di trasporto. Tramite questo meccanismo il problema del Point-To-Point viene scavalcato in quanto solo il client ed il server finale sono in grado di decodificare le informazioni.
WCF integra già al suo interno le specifiche WS-SECURITY per permettere al messaggio di essere decodificabile su qualunque piattaforma visto che le specifiche WS-* sono standard. Il contro di questa tecnica è la lentezza, in quanto il messaggio deve essere criptato e decriptato ogni volta, dai peer della comunicazione.
Queste tecniche non sono mutualmente esclusive, ma, con alcune limitazioni, possono essere utilizzate contemporaneamente.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.