Partager via


Comment : personnaliser la connexion utilisateur à l'aide du service d'authentification WCF

Mise à jour : novembre 2007

Cette rubrique indique comment valider des informations d'authentification personnalisées pour authentifier des utilisateurs lorsque vous appelez le service d'authentification ASP.NET à l'aide de Windows Communication Foundation (WCF). En général, l'authentification requiert uniquement un nom d'utilisateur et un mot de passe. Toutefois, dans certains cas, vous devrez peut-être vérifier l'identité d'un utilisateur en utilisant des informations d'authentification supplémentaires telles qu'un numéro d'identification.

Vous utilisez l'implémentation de WCF du service d'authentification lorsque vous souhaitez connecter un utilisateur depuis une application cliente pouvant transmettre et consommer un message SOAP 1.1 (application Java, par exemple).

Pour valider des informations d'authentification personnalisées à des fins d'authentification

  1. Dans le fichier Global.asax de l'application Web, créez un gestionnaire d'événements pour l'événement Authenticating.

  2. Dans le gestionnaire, lisez le contenu de la propriété CustomCredential du paramètre AuthenticatingEventArgs du gestionnaire, puis authentifiez les valeurs.

    L'exemple suivant indique comment lire deux valeurs d'authentification de la propriété CustomCredential puis les passer à une classe d'authentification personnalisée nommée 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. 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 à partir d'un service Web, puis passez les valeurs supplémentaires à authentifier dans la propriété CustomCredential.

Compilation du code

Programmation fiable

Les exemples de code précédents affichent une classe d'authentification personnalisée qui lève l'ArgumentNullException si l'un des paramètres est null. Votre code doit gérer toutes les exceptions levées pendant la validation.

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