Compartir a través de


Cómo: Personalizar la cookie de autenticación desde el servicio de autenticación de WCF

Actualización: noviembre 2007

En este tema se muestra cómo personalizar la cookie de autenticación (vale) del servicio de autenticación de ASP.NET cuando se utiliza como un servicio de Windows Communication Foundation (WCF). La cookie de autenticación se personaliza si se desea almacenar datos específicos del usuario en la cookie durante la autenticación.

Nota:

En general, almacenar datos específicos del usuario en propiedades de perfil de ASP.NET resulta más adecuado que almacenar datos en la cookie. Los datos de la propiedad de perfil no están enlazados a un equipo ni limitados a la duración de la cookie. Además, puede almacenar los datos del usuario de forma más segura en las propiedades de perfil. Personalizar el contenido de la cookie resulta útil si tiene una pequeña de cantidad de datos no confidenciales y no desea utilizar la característica de perfil de ASP.NET.

El servicio de autenticación desencadena el evento CreatingCookie una vez validadas las credenciales de usuario y antes de que se haya establecido la cookie de autenticación. Puede personalizar la cookie creando un controlador de eventos para CreatingCookie y administrando la cookie de autenticación personalmente. Puede tener acceso al nombre de usuario, contraseña y credenciales personalizadas a través del objeto CreatingCookieEventArgs que se pasa al controlador de eventos.

Utilice la implementación de WCF del servicio de autenticación si desea que un usuario inicie sesión desde una aplicación cliente que puede enviar y utilizar un mensaje SOAP 1.1, como una aplicación Java.

  1. En el archivo Global.asax de la aplicación web, cree un controlador de eventos para el evento CreatingCookie.

  2. En el controlador, agregue información a la propiedad CustomCredential de la cookie.

    El ejemplo siguiente muestra cómo personalizar la cookie de autenticación agregando el valor de la propiedad CustomCredential a la propiedad 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. En el método Application_Start del archivo Global.asax, enlace el controlador de eventos del evento CreatingCookie.

    En el siguiente ejemplo se muestra cómo enlazar un controlador al evento 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. Llame al servicio de autenticación desde una aplicación que pueda utilizar un mensaje SOAP de un servicio web.

Compilar el código

Debe configurar el servicio de autenticación en un servidor web para que funcionen los ejemplos anteriores. Para obtener más información, vea Cómo: Habilitar el servicio de autenticación de WCF.

Seguridad

Si pasa información confidencial del usuario como credenciales de autenticación, tenga acceso al servicio de autenticación utilizando siempre la Capa de sockets seguros (SSL), mediante el protocolo HTTPS. Para obtener información sobre cómo configurar SSL, vea Configuring Secure Sockets Layer (IIS 6.0 Operations Guide).

Vea también

Conceptos

Información general sobre el servicio de autenticación de Windows Communication Foundation

Referencia

AuthenticationService

CreatingCookieEventArgs