Ovviamente non possiamo inserire le nostre credenziali tramite una finestra proposta del browser?
Consideriamo il seguente web service che fornisce l'ora del server:
<%@ Webservice class="TimeUtility" %>
Imports System
Imports System.DateTime
Imports System.Web.Services
<WebService(description:="Prova per l'identificazione dell'utente che utilizza i webservices",Namespace:="http://aspitalia.com/webservices/") > _
Public Class TimeUtility
Inherits Webservice
WebMethod(Description:="Restituisce l'ora attuale")> _
Public Function WhatTimeIsIt() as String
return Now().ToString
End Function
End ClassSappiamo che sia scrivendo noi sia utilizzando Microsoft Visual Studio.Net sia utilizzando l'application console wsdl.exe, il proxy creato avrà una classe con nome e metodi identici al web service in modo da essere utilizzato come una normale classe presente sul nostro server.
Quest'ultima eredita la classe SoapHttpClientProtocol che essendo uno strumento per dialogare con il protocollo Soap contiene una proprietà Credentials del tipo NetworkCredential, contenuto nel namespace System.Net. Non dobbiamo far altro che fornire le nostre credenziali tramite Soap come indicato di seguito:
<%@ Page Language="vb" debug="true" %>
<%@ Import namespace="System.Net" %>
<%@ Assembly src="ora.vb" %>
<script runat="server">
Private Sub Page_Load(sender as Object, e as EventArgs)
Try
Dim objOra as New TimeUtility
Dim objAuthentication as New NetworkCredential
objAuthentication.UserName="Administrator"
objAuthentication.Password="password"
objOra.Credentials=objAuthentication
result.Text="Sono le: " &objOra.WhatTimeIsIt()
Catch err as Exception
result.Text=Err.Message
End Try
End Sub
</script>
<asp:Label id="result" runat="server" />Nell'esempio si può notare che nel normale uso del web service è stata creata una nuova istanza di NetworkCredential e che per fornite le credenziali (autenticate tramite l'ACLs di Windows) vengono assegnate alla proprietà Credentials ereditata dal SoapHttpClientProtocol. Ad ogni singola chiamata queste credenziali vengono passate in modo da consentirne l'elaborazione nel caso l'autenticazione vada a buon fine.
Purtroppo questa autenticazione presenta oltre al fatto del problema della compatibilità della autenticazione NTLM un eccessiva elaborazione nel processo stesso e un rischio maggiore per l'invio delle credenziali ad ogni chiamata.
Autenticazione Forms
Un altro metodo di autenticazione e autorizzazione è mediante Forms che fa uso di un cookie per mantenere lo stato di autenticazione.
Il nome autenticazione Forms è un po' improprio perché a differenza delle normali pagine ASP.Net se un utente non è autentificato non sarà possibile reindirizzarlo ad una pagina di login poiché stiamo lavorando con il protocollo Soap e non con un normale browser.
Allora perché usare questa opzione? Semplicemente perchè per l'autenticazione del client vengono utilizzati i cookies.
Innanzitutto bisogna configurare l'applicazione che fornisce il web service per aggiungere il supporto all'autenticazione forms, sempre all'interno del web.config:
<configuration>
<system.web>
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="login.aspx" protection="All" />
</authentication>
</system.web>
</configuration>E' importante notare che non abbiamo specificato nè delle <credentials> nè una sezione <authorization> perché se un utente non fosse riconosciuto o fosse anonimo, come detto in precedenza, verrebbe (teoricamente) reindirizzato alla pagina login.aspx cosa che non si potrebbe gestire così semplicemente.
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
- Galleria fotografica dinamica con ASP.NET AJAX
- Usare Search come un servizio nei tuoi siti e nei tuoi client
- Mappe nel tuo sito con Virtual Earth
- Integrare Windows Live ID, Contacts e Presence API nelle tue applicazioni
- Introduzione ai cloud based service con Windows Live Services
- Realizzare un custom extender AJAX con ASP.NET 3.5
- Tracciare le modifiche ai dati e allineare i datawarehouse con il Change Data Capture in SQL Server 2008
- Le nuove caratteristiche di IIS 7.0 per sviluppatori e sistemisti
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.






Difficoltà

Stampa
Download


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!