Procedura: personalizzare l'accesso utente per l'utilizzo del servizio di autenticazione WCF
Aggiornamento: novembre 2007
In questo argomento viene illustrato come convalidare le credenziali personalizzate per autenticare gli utenti quando viene chiamato il servizio di autenticazione ASP.NET utilizzando Windows Communication Foundation (WCF). In genere, l'autenticazione richiede solo un nome utente e una password. In alcuni casi, tuttavia, potrebbe essere necessario verificare l'identità di un utente utilizzando credenziali aggiuntive, ad esempio un numero di identificazione.
L'implementazione WCF del servizio di autenticazione viene utilizzata per connettere un utente da un'applicazione client in grado di inviare e utilizzare un messaggio SOAP 1.1, quale un'applicazione Java.
Per convalidare le credenziali personalizzate per l'autenticazione
Nel file Global.asax dell'applicazione Web, creare un gestore eventi per l'evento Authenticating.
Nel gestore, leggere il contenuto della proprietà CustomCredential del parametro AuthenticatingEventArgs del gestore e quindi autenticare i valori.
Nell'esempio riportato di seguito viene illustrato come leggere due valori di autenticazione dalla proprietà CustomCredential e quindi passarli a una classe di autenticazione personalizzata denominata StudentAuthentication.
Sub AuthenticationService_Authenticating _ (ByVal sender As Object, _ ByVal e As System.Web.ApplicationServices.AuthenticatingEventArgs) Dim studentid As String = String.Empty Dim answer As String = String.Empty Dim credentials As String() = _ e.CustomCredential.Split(New Char() {","c}) If (credentials.Length > 0) Then studentid = credentials(0) If (credentials.Length > 1) Then answer = credentials(1) End If End If Try e.Authenticated = _ StudentAuthentication.ValidateStudentCredentials _ (e.Username, e.Password, studentid, answer) Catch ex As ArgumentNullException e.Authenticated = False End Try e.AuthenticationIsComplete = True End Sub
void AuthenticationService_Authenticating(object sender, System.Web.ApplicationServices.AuthenticatingEventArgs e) { string studentid = String.Empty; string answer = String.Empty; string[] credentials = e.CustomCredential.Split(new char[] { ',' }); if (credentials.Length > 0) { studentid = credentials[0]; if (credentials.Length > 1) { answer = credentials[1]; } } try { e.Authenticated = StudentAuthentication.ValidateStudentCredentials (e.UserName, e.Password, studentid, answer); } catch (ArgumentNullException ex) { e.Authenticated = false; } e.AuthenticationIsComplete = true; }
Nel metodo Application_Start del file Global.asax, associare il gestore eventi per l'evento Authenticating.
Nell'esempio riportato di seguito viene illustrato come associare un gestore all'evento Authenticating.
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) AddHandler System.Web.ApplicationServices.AuthenticationService.Authenticating, _ AddressOf Me.AuthenticationService_Authenticating End Sub
void Application_Start(object sender, EventArgs e) { System.Web.ApplicationServices.AuthenticationService.Authenticating += new EventHandler<System.Web.ApplicationServices.AuthenticatingEventArgs>(AuthenticationService_Authenticating); }
Chiamare il servizio di autenticazione da un'applicazione in grado di leggere e utilizzare un messaggio SOAP da un servizio Web e passare i valori aggiuntivi da autenticare nella proprietà CustomCredential.
Compilazione del codice
- Per il corretto funzionamento degli esempi precedenti, è necessario configurare il servizio di autenticazione su un server Web. Per ulteriori informazioni, vedere Procedura: attivare il servizio di autenticazione WCF.
Programmazione efficiente
Negli esempi di codice precedenti viene illustrata una classe di autenticazione personalizzata che genera ArgumentNullException se uno dei parametri è null. Il codice deve gestire tutte le eccezioni generate durante la convalida.
Sicurezza
Accedere sempre al servizio di autenticazione tramite SSL (Secure Sockets Layer) utilizzando il protocollo HTTPS.
Vedere anche
Concetti
Cenni preliminari sul servizio di autenticazione di Windows Communication Foundation