/// <summary>
 /// Initializes a new instance of the <see cref="HealthPrincipalWrapper"/> class.
 /// </summary>
 /// <param name="principal">The principal.</param>
 public HealthPrincipalWrapper(HealthPrincipal principal)
 {
     this.Principal = principal;
     this.DateTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc);
 }
 /// <summary>
 ///     Crear el contexto de seguridad del Sistema, para que este pueda ser accedido
 ///     desde el hilo de ejecución System.Threading.Thread
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
 /// <exception cref="System.Exception">@Error.NoEncontroCookieAutenticacionSistema</exception>
 /// <exception cref="Exception">@Error.NoEncontroCookieAutenticacionSistema</exception>
 private static void CreateSecurityContext(object sender, EventArgs e) {
     // recuperar contexto de http
     var httpContext = (HttpApplication)sender;
     //
     // el usuario no está autenticado?
     if (!httpContext.Request.IsAuthenticated) return;
     //
     // recuperar cookie de autenticación con el valor del número de cookies
     var cookie = httpContext.Request.Cookies[FormsAuthentication.FormsCookieName];
     //
     // se encontró la cookie?
     if (cookie != null){
         // recuperar boleto de autenticación
         var authTicket = FormsAuthentication.Decrypt(cookie.Value);
         //
         if (authTicket == null) return;
         //
         // recuperar objeto con la información de sesión
         var session = GetSessionFromCookies(httpContext.Context, int.Parse(authTicket.UserData));
         //
         // crear identidad
         var identity = new HealthIdentity(session);
         //
         // crear contexto de seguridad
         var principal = new HealthPrincipal(identity);
         //
         // ajustar el contexto de seguridad de asp.net para que tome el de
         // y así pueda ser accedido desde cualquier librería haciendo uso
         // del hilo de ejecución (System.Threading.Thread)
         HttpContext.Current.User = principal;
         Thread.CurrentPrincipal = principal;
     } else throw new Exception(@"Error.NoEncontroCookieAutenticacionSistema"); //TODO: Revisar con Edward
 }