provax

Page 35

Capitolo 26 Gli XML Web service

1161

Dim requiredSubscriptionLevel As Integer Select Case mb.Name Case “ProtectedMethod” requiredSubscriptionLevel = 1 Case “AnotherProtectedMethod” requiredSubscriptionLevel = 2 End Select ‘ Solleva un’eccezione se il livello di sottoscrizione non è ‘ sufficiente. If thisUserSubscriptionLevel < requiredSubscriptionLevel Then Throw New SoapException(“Insufficient subscription level”, _ SoapException.ClientFaultCode) End If ‘ Esce regolarmente se tutto è corretto. End Sub ‘ Ottiene il livello di sottoscrizione dell’utente, oppure -1 se le ‘ credenziali non sono valide. Function GetUserSubscriptionLevel(ByVal username As String, _ ByVal password As String) As Integer ‘ (Un’applicazione reale utilizzerebbe un database). If username = “JoeDoe” And password = “jdpwd” Then Return 1 ElseIf username = “AnnSmith” And password = “aspwd” Then Return 2 Else ‘ Utente sconosciuto o credenziali non valide. Return -1 End If End Function

Ora esiste un posto centralizzato nel quale è possibile controllare tutti gli accessi agli XML Web service, pertanto è possibile modificare la sottoscrizione e applicare la policy senza apportare modifiche al codice di qualsiasi altro metodo dell’XML Web service. È possibile migliorare ulteriormente questo meccanismo creando un’estensione SOAP che legga l’intestazione SOAP ed effettui l’autenticazione e l’autorizzazione prima che il flusso dell’esecuzione abbia raggiunto il metodo, come si vedrà nel prossimo paragrafo.

Le estensioni SOAP L’architettura degli XML Web service può essere completamente ridefinita dal programmatore, se necessario, per mezzo delle estensioni SOAP. Un’estensione SOAP è un modulo software in grado di eseguire codice personalizzato prima che il messaggio SOAP raggiunga il metodo dell’XML Web service. Più precisamente, esistono quattro punti nei quali un’estensione SOAP ha la possibilità di eseguire codice personalizzato. Questi corrispondono ai quattro stati nei quali si può trovare un messaggio SOAP. (Si veda la parte di destra della figura 26-13). ■ BeforeDeserialize Il messaggio SOAP è stato ricevuto dal client, si trova sempre in formato XML e non è ancora stato deserializzato in un oggetto in memoria. ■ AfterDeserialize Il messaggio SOAP è stato serializzato in un oggetto e il metodo dell’XML Web service sta per essere invocato. ■ BeforeSerialize Il metodo dell’XML Web service ha terminato l’esecuzione e l’oggetto risultato sta per essere serializzato in XML. ■ AfterSerialize L’oggetto risultato è stato serializzato in un messaggio SOAP e il testo XML sta per essere inviato al client.


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.