The .Net framework already has builtin support for contextual user identity information: Thread.CurrentPrincipal http://msdn.microsoft.com/en-us/library/system.threading.thread.currentprincipal.aspx
Use one of the available IPrincipal implementations or create your own - it's easy. Then set the property early on, in some "begin-request" method.
There is also HttpContext.User to be aware of in ASP.NET code.