Partager via


Comment : personnaliser le cookie d'authentification du service d'authentification WCF

Mise à jour : novembre 2007

Cette rubrique montre comment personnaliser le cookie d'authentification (ticket) pour le service d'authentification ASP.NET lorsqu'il est utilisé comme un service Windows Communication Foundation (WCF). Vous personnalisez le cookie d'authentification lorsque vous souhaitez sauvegarder des données spécifiques à l'utilisateur dans le cookie lors de l'authentification.

Remarque :

En général, stocker des données spécifiques à l'utilisateur dans des propriétés de profil ASP.NET est une meilleure alternative que de stocker des données dans le cookie. Les données de propriété de profil ne sont pas liées à un ordinateur ou limitées à la durée de vie du cookie. De plus, le stockage des données utilisateur est plus sécurisé dans les propriétés de profil. Personnaliser le contenu du cookie est utile si vous avez une petite quantité de données non sensibles et ne souhaitez pas utiliser la fonctionnalité de profil ASP.NET.

Le service d'authentification déclenche l'événement CreatingCookie une fois que les informations d'authentification de l'utilisateur ont été validées et avant que le cookie d'authentification n'ait été défini. Vous pouvez personnaliser le cookie en créant un gestionnaire d'événements pour CreatingCookie et en gérant vous-même le cookie d'authentification. Vous pouvez accéder au nom d'utilisateur, au mot de passe et aux informations d'authentification via l'objet CreatingCookieEventArgs qui est passé au gestionnaire d'événements.

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).

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

  2. Dans le gestionnaire, ajoutez des informations à la propriété CustomCredential du cookie.

    L'exemple suivant montre comment personnaliser le cookie d'authentification en ajoutant la valeur de la propriété CustomCredential à la propriété UserData.

    Sub AuthenticationService_CreatingCookie(ByVal sender As Object, _
                     ByVal e As System.Web.ApplicationServices.CreatingCookieEventArgs)
        Dim ticket As FormsAuthenticationTicket = New _
           FormsAuthenticationTicket _
            (1, _
             e.Username, _
             DateTime.Now, _
             DateTime.Now.AddMinutes(30), _
             e.IsPersistent, _
             e.CustomCredential, _
             FormsAuthentication.FormsCookiePath)
    
        Dim encryptedTicket As String = FormsAuthentication.Encrypt(ticket)
    
        Dim cookie As HttpCookie = New _
            HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)
        cookie.Expires = DateTime.Now.AddMinutes(30)
    
        HttpContext.Current.Response.Cookies.Add(cookie)
        e.CookieIsSet = True
    End Sub
    
    void AuthenticationService_CreatingCookie(object sender, 
        System.Web.ApplicationServices.CreatingCookieEventArgs e)
    {
        FormsAuthenticationTicket ticket = new
              FormsAuthenticationTicket
                (1,
                 e.UserName,
                 DateTime.Now,
                 DateTime.Now.AddMinutes(30),
                 e.IsPersistent,
                 e.CustomCredential,
                 FormsAuthentication.FormsCookiePath);
    
        string encryptedTicket =
             FormsAuthentication.Encrypt(ticket);
    
        HttpCookie cookie = new HttpCookie
             (FormsAuthentication.FormsCookieName,
              encryptedTicket);
        cookie.Expires = DateTime.Now.AddMinutes(30);
    
        HttpContext.Current.Response.Cookies.Add(cookie);
        e.CookieIsSet = true;
    }
    
  3. Dans la méthode Application_Start du fichier Global.asax, liez le gestionnaire d'événements pour l'événement CreatingCookie.

    L'exemple suivant montre comment lier un gestionnaire à l'événement CreatingCookie.

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        AddHandler System.Web.ApplicationServices.AuthenticationService.CreatingCookie, _
            AddressOf Me.AuthenticationService_CreatingCookie
    End Sub
    
    void Application_Start(object sender, EventArgs e)
    {
        System.Web.ApplicationServices.AuthenticationService.CreatingCookie 
            += new EventHandler<System.Web.ApplicationServices.CreatingCookieEventArgs>
            (AuthenticationService_CreatingCookie);
    }
    
  4. Appelez le service d'authentification depuis une application qui peut consommer un message SOAP d'un service Web.

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é

Si vous transmettez des données utilisateur sensibles, telles que les informations d'authentification, accédez toujours au service d'authentification par SSL (en utilisant le protocole HTTPS). Pour plus d'informations sur la configuration de SSL, consultez Configuration de SSL (Secure Sockets Layer) (Guide des opérations IIS 6.0).

Voir aussi

Concepts

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

Référence

AuthenticationService

CreatingCookieEventArgs