Condividi tramite


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

  1. Nel file Global.asax dell'applicazione Web, creare un gestore eventi per l'evento Authenticating.

  2. 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;
    }
    
  3. 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);
    
    }
    
  4. 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

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

Riferimenti

AuthenticationService

AuthenticatingEventArgs