Partager via


Comment : utiliser des fournisseurs d'appartenances non définis par défaut pour le service d'authentification WCF

Mise à jour : novembre 2007

Cette rubrique indique comment sélectionner le fournisseur d'appartenances par programme lorsque vous appelez le service d'authentification ASP.NET en utilisant Windows Communication Foundation (WCF). Vous pouvez utiliser un fournisseur d'appartenances non défini par défaut lorsque vous devez authentifier des utilisateurs en utilisant des fournisseurs d'appartenances différents, selon les informations que vous obtenez au moment de l'exécution. Pour l'authentification avec un fournisseur d'appartenances qui n'est pas défini par défaut, vous devez créer un gestionnaire d'événements pour l'événement Authenticating.

Utilisez WCF pour permettre au service d'authentification d'ouvrir une session en tant qu'utilisateur d'une application cliente qui peut envoyer et consommer un message SOAP 1.1, tel qu'une application JAVA. L'application cliente peut authentifier l'utilisateur en utilisant les même informations d'identification d'utilisateur qu'une application Web ASP.NET.

Pour authentifier l'utilisation du fournisseur d'appartenances non défini par défaut

  1. Créez et configurez le fournisseur d'appartenances à utiliser.

    Pour plus d'informations, consultez Implémentation d'un fournisseur d'appartenances et Configuration d'une application ASP.NET pour utiliser l'appartenance (membership).

  2. Dans le fichier Global.asax, créez un gestionnaire d'événements pour l'événement Authenticating et ajoutez du code pour authentifier les informations d'identification d'utilisateur en appelant le fournisseur d'appartenances personnalisé.

    L'exemple suivant affiche un gestionnaire pour l'événement Authenticating qui authentifie les informations d'identification à l'aide des fournisseurs nommés ContosoSqlProvider, FabrikamSqlProviderou du fournisseur d'appartenances par défaut. Les informations d'identification d'utilisateur sont stockées dans des bases de données différentes en fonction du type d'utilisateur. Le gestionnaire d'événements détermine quel fournisseur utiliser selon l'adresse de messagerie fournie comme nom d'utilisateur.

    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. Dans la méthode Application_Start du fichier Global.asax, liez le gestionnaire d'événements pour l'événement Authenticating.

    L'exemple suivant montre comment lier un gestionnaire à l'événement 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. Appelez le service d'authentification d'une application qui peut lire et consommer un message SOAP 1.1.

Compilation du code

Vous devez installer le service d'authentification sur un serveur Web pour permettre aux exemples précédents de fonctionner. Pour plus d'informations, consultez Comment : activer le service d'authentification de WCF.

Sécurité

Vous devez systématiquement accéder au service d'authentification en utilisant la couche de sockets sécurisée (SSL, Secure Sockets Layer), avec le protocole HTTPS.

Voir aussi

Concepts

Vue d'ensemble du service d'authentification de Windows Communication Foundation

Référence

AuthenticationService

AuthenticatingEventArgs

Autres ressources

Gestion des utilisateurs à l'aide de l'appartenance