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.
Para personalizar la cookie de autenticación
En el archivo Global.asax de la aplicación web, cree un controlador de eventos para el evento CreatingCookie.
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; }
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); }
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