Recientemente me encontré con un problema al ejecutar una aplicación web asp.net en Visual Studio 2008. Recibo el error 'type not resolved for member ... customUserPrincipal'. Al rastrear varios grupos de discusión, parece que hay un problema con el servidor web de Visual Studio cuando se asigna un principal personalizado contra Thread.CurrentPrincipal.diferencia entre http.context.user y thread.currentprincipal y cuándo usarlos?
En mi código, ahora uso ...
HttpContext.Current.User = myCustomPrincipal
//Thread.CurrentPrincipal = myCustomPrincipal
Me alegro que me dieron el error fuera del camino, pero se plantea la pregunta "¿Cuál es la diferencia entre estos dos métodos de establecer un principal? ". Hay otros Stackoverflow questions relacionados con las diferencias, pero no entran en los detalles de los dos enfoques.
Lo que encontrar una tentadora post que tenía el siguiente comentario grandioso pero ninguna explicación para respaldar sus afirmaciones ...
Uso HttpConext.Current.User para todos aplicaciones web (ASPX/ASMX).
Uso Thread.CurrentPrincipal para todas las demás aplicaciones como WinForms, consola y servicio de las ventanas aplicaciones.
¿Alguno de ustedes gurus de seguridad/dot.net arroja algo de luz sobre este tema?
Según mis pruebas locales con IIS 7.5 .NET 4.5, esta respuesta es incorrecta y la respuesta de @ womp es correcta. Por defecto, Thread.CurrentPrincipal y HttpContext.Current.User devuelven la aplicación/usuario web. System.Security.Principal.WindowsIdentity.GetCurrent() y Environment.UserDomainName + Environment.UserName ambos devuelven la identidad del proceso del grupo de aplicaciones/trabajadores de IIS. – BateTech
Me pregunto si esto cambió desde que esta respuesta se escribió hace 4.5 años, si es así, quizás @yamspog pueda volver a etiquetar la otra respuesta como la respuesta aceptada. – Aren