Procedura: utilizzare un provider di appartenenze non predefinito per il servizio di autenticazione WCF

Aggiornamento: novembre 2007

In questo argomento viene illustrato come selezionare il provider di appartenenze a livello di codice quando viene chiamato il servizio di autenticazione ASP.NET utilizzando Windows Communication Foundation (WCF). È possibile utilizzare un provider di appartenenze non predefinito quando è necessario autenticare utenti tramite provider di appartenenze diversi, in base a informazioni ottenute in fase di esecuzione. Per l'autenticazione tramite un provider di appartenenze non predefinito, è necessario creare un gestore eventi per l'evento Authenticating.

Il servizio di autenticazione WCF viene utilizzato per connettere un utente da un'applicazione client in grado di inviare e utilizzare un messaggio SOAP 1.1, quale un'applicazione Java. L'utente può essere autenticato dall'applicazione client utilizzando le stesse credenziali utente di un'applicazione Web ASP.NET.

Per eseguire l'autenticazione tramite un provider di appartenenze non predefinito

  1. Creare e configurare il provider di appartenenze che si desidera utilizzare.

    Per ulteriori informazioni, vedere Implementazione di un provider di appartenenze e Configurazione di un'applicazione ASP.NET per l'utilizzo delle appartenenze.

  2. Nel file Global.asax creare un gestore eventi per l'evento Authenticating, quindi aggiungere codice per autenticare le credenziali utente chiamando il provider di appartenenze personalizzato.

    Nell'esempio seguente viene illustrato un gestore per l'evento Authenticating che autentica le credenziali utilizzando i provider denominati ContosoSqlProvider, FabrikamSqlProvider o il provider di appartenenze predefinito. Le credenziali utente sono archiviate in database diversi in base al tipo di utente. Il gestore eventi determina quale provider dovrà essere utilizzato in base all'indirizzo di posta elettronica fornito come nome utente.

    Sub AuthenticationService_Authenticating _
       (ByVal sender As Object, _
        ByVal e As System.Web.ApplicationServices.AuthenticatingEventArgs)
    
        If (e.Username.IndexOf("@contoso.com") >= 0) Then
            e.Authenticated = Membership.Providers("ContosoSqlProvider").ValidateUser(e.Username, e.Password)
        ElseIf (e.Username.IndexOf("@fabrikam.com") >= 0) Then
            e.Authenticated = Membership.Providers("FabrikamSqlProvider").ValidateUser(e.Username, e.Password)
        Else
            e.Authenticated = Membership.Provider.ValidateUser(e.Username, e.Password)
        End If
        e.AuthenticationIsComplete = True
    End Sub
    
    void AuthenticationService_Authenticating(object sender, System.Web.ApplicationServices.AuthenticatingEventArgs e)
    {
        if (e.UserName.IndexOf("@contoso.com") >= 0)
        {
            e.Authenticated = Membership.Providers["ContosoSqlProvider"].ValidateUser(e.UserName, e.Password);
        }
        else if (e.UserName.IndexOf("@fabrikam.com") >= 0)
        {
            e.Authenticated = Membership.Providers["FabrikamSqlProvider"].ValidateUser(e.UserName, e.Password);
        }
        else
        {
            e.Authenticated = Membership.Provider.ValidateUser(e.UserName, e.Password);
        }
        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 1.1.

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.

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

Altre risorse

Gestione di utenti tramite l'appartenenza