Using ASP.NET WebAPI, during authentication, Thread.CurrentPrincipal is set so that controllers can later use the ApiController.User property.
Thread.CurrentPrincipal
ApiController.User
You have to set HttpContext.Current.User as well. See this answer and this blog post for more info.
HttpContext.Current.User
Update: Also ensure you are running on .NET 4.5 and have UserTaskFriendlySynchronizationContext set to true.
UserTaskFriendlySynchronizationContext
true