Cita: Pero ¿que pasa si el usuario desencripta la cookie, le cambia "normal_user" por "admin" y la vuelve a encriptar?
Para empezar el ticket guarda una referencia del contexto del usuario que posteriormente pasa por un encritpamiento (FormsAuthentication.Encrypt(ticket)), por lo que el usuario no la puede descencriptar tan facilmente y si la llega a cambiar necesita el contexto del usuario el cual lo proporciona la app.
Me imagino que tienes algo así en tu code:
Cita: FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
Context.User.Identity.Name,
DateTime.Now,
DateTime.Now.AddHours(1),
false,
"tus roles")
string sCookie = FormsAuthentication.Encrypt(ticket);
Response.Cookies["Roles"].Value = sCookie;
Salu2