Como: Personalizar o cookie de autenticação do serviço de autenticação do WCF
Este tópico mostra como personalizar o cookie de autenticação (permissão) para o serviço de autenticação do ASP.NET quando ele é usado como um serviço Windows Communication Foundation (WCF).Você personaliza o cookie de autenticação quando você deseja armazenar dados específicos do usuário no cookie durante a autenticação.
Observação: |
---|
Em geral, o armazenamento de dados específicos do usuário em propriedades de perfil do ASP.NET é uma opção melhor que armazenar dados no cookie.Dados de propriedade do perfil não são vinculados a um computador ou limitados à vida útil do cookie.Além disso, você pode armazenar os dados do usuário de forma mais segura nas propriedades de perfil.Personalizar o conteúdo do cookie é útil se você tem uma pequena quantidade de dados não confidenciais e não deseja usar o recurso de perfil do ASP.NET. |
O serviço de autenticação gera o evento CreatingCookie após as credenciais do usuário serem validadas e antes do cookie de autenticação ser definido.Você pode personalizar o cookie, criando um manipulador de eventos para CreatingCookie e gerenciando o cookie de autenticação você mesmo.Você pode acessar o nome de usuário, senha e credenciais personalizadas através do objeto CreatingCookieEventArgs que é passado para o manipulador de eventos.
You use the WCF implementation of the authentication service when you want to log a user in from a client application that can send and consume a SOAP 1.1 message, such as a Java application.
Para personalizar o cookie de autenticação
In the Global.asax file of the Web application, create an event handler for the CreatingCookie event.
No manipulador, adicione informações à propriedade CustomCredential do cookie.
O exemplo a seguir mostra como personalizar o cookie de autenticação, adicionando o valor da propriedade CustomCredential para a propriedade 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; }
In the Application_Start method of the Global.asax file, bind the event handler for the CreatingCookie event.
The following example shows how to bind a handler to the CreatingCookie event.
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); }
Chame o serviço de autenticação a partir de um aplicativo que possa receber uma mensagem SOAP de um serviço Web.
Compilando o código
You must set up the authentication service on a Web server for the previous examples to work.Para obter mais informações, consulte Como: Habilitar o serviço de autenticação do WCF.
Segurança
Se você estiver passando dados confidenciais do usuário, como credenciais de autenticação, sempre acesse o serviço de autenticação sobre a camada de soquetes seguros (SSL, usando protocolo HTTPS).Para obter informações sobre como configurar a protocolo SSL, consulte Configurando Secure Sockets camada (guia de operações de IIS 6.0).
Consulte também
Conceitos
Visão geral do serviço de autenticação Windows Communication Foundation