The app is running using impersonation and windows authentication. What is the difference of what i've got in the three cases?
System.Threading.Thread.CurrentPrincipal.Identity as WindowsIdentity
WindowsIdentity.GetCurrent()
((HttpContext) context).User.Identity as WindowsIdentity
Here you have all the different posibilites. In your case you'll get the same for all 3 (Domain\UserName)