Home Page Home Page Articoli SOAP Headers e sicurezza nei web services

SOAP Headers e sicurezza nei web services

Hai un web service e non sai se è sicuro? Questo articolo ti illustra uno dei tanti metodi per rendere sicuro il tuo web service, i SOAP Headers.
Autore: Giovanni Ferron Livello:
I SOAP Headers permettono ad un client che si collega ad un web service di inviare informazioni aggiuntive, come per esempio Username e Password di un utente, o altre informazioni ?sendibili?. Queste informazioni vengono aggiunte alla richiesta del web service. Il vantaggio è che gli header possono essere inviati solo da un client, e non possono essere impostati dall?interfaccia web pubblica che fornisce il .NET Framework

Costruire il servizio
Per poter implementare un Soap Header dobbiamo importa il namespace System.Web.Services.Protocols.


//C#
using System.Web.Services.Protocols;

//VB.NET
Imports System.Web.Services.Protocols;


Ora per poter implementare il nostro header dobbiamo creare una classe derivata dalla classe SoapHeader E aggiungere i nostri due oggetti Username e Password.



// SOAP Header per l'autenticazione

public class myHeader : SoapHeader
{

// Username utente
public string Username;

// Password utente
public string Password;
}


A questo punto dobbiamo creare nel nostro servizio un metodo che controlli le nostre credenziali di accesso, per far ciò creiamo un istanza che fa riferimento a myHeader, e poi la utilizziamo nella nostra funzione, in questo modo:


// SOAP Header per l'autenticazione
public myHeader sHeader;


A questo punto per poter utilizzare l?header nei notri metodi, per ognuno dobbiamo specificare, oltre all?attributo webmethod, anche l?attributo SoapHeader(), indicando il nome dell?oggetto header, in questo modo:


[WebMethod(Description="Metodo che controlla l'header di autenticazione")]
[SoapHeader("sHeader")]


Ora costruiamo la nostra funzione, nella quale controlleremo l?header inviato dal client. Per ricavare la username e la password del nostro header, non dobbiamo fare altro che utilizzare il nostro oggetto SoapHeader myHeader:


//Ricavo login e password
string usr = sHeader.Username;
string pwd = sHeader.Password;


adesso posso creare tutti i controlli che voglio sulla login e password, database, windows authentication, chi più ne ha più ne metta.
Il servizio via interfaccia web si presenta in questo modo:



Come si vede non c?è indicazione degli header di autenticazione, che troviamo invece nelle dichiarazioni SOAP del servizio:




Costruire il client
Ora che abbiamo costruito il nostro servizio dobbiamo implementare il client per vedere dei risultati. Per poter utilizzare il nostro web service e il soap header dobbiamo creare i rispettivi 2 oggetti:



// Oggetto web services con i dati dell'utente
soapHeadercsharp.service1 myService = new soapHeadercsharp.service1();

// Header Soap per l'autenticazione dell'utente
soapHeadercsharp.myHeader myHeader = new soapHeadercsharp.myHeader ();


Una volta creati i due oggetti li posso utilizzare nella mia applicazione client, prima impostando i valori del mio header, poi assegnandolo all?oggetto sHeader dell?oggetto myService, e in seguito richiamando il metodo del servizio, in questo modo:


myHeader.Username = strLoginUtente; //Username dell?utente
myHeader.Password = strPassUtente; //Password utente
//Associo l?header al servizio
wsrvMessaggi.myHeaderValue = myHeader;
//Richiamo il metodo del servizio
return myService.checkHeader();


Sicurezza
L?utilizzo dei SOAP Header permette un buon livello di sicurezza, anche se i dati contenuti nei SOAP Header sono in chiaro, quindi per aggiungere un livello maggiore di sicurezza è possibile utilizzare il Secure Sockets Layer su protocollo HTTPS, quindi permettendo solo ai client in possesso di certificati validi l?accesso al servizio.
Voto medio articolo: 3.4 Numero Voti: 9

File allegati


102_soaphdrs.zip (28 Kbyte)
Giovanni Ferron

Giovanni Ferron

Sviluppatore dal 2000. Collabora a grandi progetti nella creazione di portali e intranet aziendali. Attualmente ha lasciato la terra natia per una nuova avventura in Australia, dove lavora come programmatore web per una emittente radio Australiana. Profilo completo

Articoli collegati

Creare pagine HTML utilizzando XML e XSLT (XML2HTML)
In questo articolo vedremo come creare una pagina HTML "formattata" partendo da un file XML e trasformandolo tramite XSLT. Tutti sapete cosa sia un documento HTML, quasi tutti sapete cosa sia un documento XML ma pochi sanno cosa sia l’ XSLT, cerchiamo, quindi, in poche righe, di capire di cosa stiamo parlando.
Autore: Stefano Passatordi | Difficoltà: | Commenti: 7
XML in SQL Server 2005
Scopriamo come è stato implementato il supporto nativo XML in SQL Server 2005, mostrando anche come è possibile con XQuery gestire e manipolare i dati XML all'interno del Database.
Autore: Marco Caruso | Difficoltà: | Commenti: 2 | Voto:
BLOB in XML
In quest'articolo vedremo come scrivere e leggere Blob(Binary Large Object) in un file XML utilizzando la classe XmlTextWriter e la classe XmlTextReader.
Autore: Marco Caruso | Difficoltà: | Commenti: 1 | Voto:
Il DOM XML
Microsoft ha messo a disposizione degli sviluppatori un intero namespace (System.XML) per la manipolazione dei files XML tramite il DOM, vediamo in questo articolo alcuni percorsi per operare facilmente con XML
Autore: Marco Caruso | Difficoltà: | Commenti: 16
dotNetHell Contents Web Service
Un nuovo Web Service a disposizione di tutti quelli che desiderano pubblicare i contenuti offerti da dotNetHell (Articoli, News e Tips) nei loro siti Web tramite l'utilizzo di script preconfezionati per ASP Classico, ASP.NET, PHP e Javascript
Autore: David De Giacomi | Difficoltà: | Voto:
Ricerca in un file XML: un Textbox per il tuo sito dinamico
Una soluzione semplice ed elegante per creare un sito Web dinamico consiste nell?utilizzo di XML. Vi mostrerò in questo articolo come implementare un campo di ricerca per i vostri siti basati su XML e .NET.
Autore: Luigi Corrias | Difficoltà: | Commenti: 2
Il calcolo del Codice Fiscale
Mostreremo in questo articolo un algoritmo molto comune; è l'algoritmo che ci permette di calcolare il Codice Fiscale. Oltre a questo dotNetHell mette a disposizione un Web Service che può essere "consumato" (utilizzato) da chiunque liberamente.
Autore: David De Giacomi | Difficoltà: | Commenti: 12 | Voto:
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5