TFS2010: Who am I? (getting logged in user info)

When you login to TFS using object model, sometimes it may be useful to get information about logged in user (such as domain, account, email etc.).

In TFS 2008 object model, one would get the logged in user display name, domain name, account name and email as following:

    1 TeamFoundationServer server = new TeamFoundationServer("tfsserver",

    2        new System.Net.NetworkCredential("domain_name\\user_name", "pwd"));

    3 server.EnsureAuthenticated();

    4 

    5 Console.Write(server.AuthenticatedUserDisplayName);

    6 // returns user's display name

    7 

    8 Console.Write(server.AuthenticatedUserName);

    9 // returns domain_name\user_name

   10 

   11 // AuthenticatedUserIdentity is Microsoft.TeamFoundation.Server.Identity

   12 Console.Write(server.AuthenticatedUserIdentity.Domain + "\\" +

   13         server.AuthenticatedUserIdentity.AccountName);

   14 // returns domain_name\user_name  

   15        

   16 Console.Write(server.AuthenticatedUserIdentity.MailAddress); 

   17 // returns user’s email

In TFS 2010 OM, AuthenticatedUserDisplayName, AuthenticatedUserName and AuthenticatedUserIdentity properties are all deprecated, and instead AuthorizedIdentity property is introduced on Team Project Collection class. The code below makes use of the new property to retrieve logged in user information:

    1 TfsTeamProjectCollection collection = new TfsTeamProjectCollection(

    2        new Uri(https://tfsserver:8080/tfs/defaultcollection,

    3        new System.Net.NetworkCredential("domain_name\\user_name", "pwd"));

    4 collection.EnsureAuthenticated();

    5 

    6 // AuthorizedIdentity is Microsoft.TeamFoundation.Framework.Client.TeamFoundationIdentity

    7 Console.Write(collection.AuthorizedIdentity.DisplayName);

    8 // returns user's display name

    9 

   10 Console.Write(collection.AuthorizedIdentity.GetAttribute("Domain", "default"));

   11 // returns domain_name

   12 

   13 Console.Write(collection.AuthorizedIdentity.GetAttribute("Account", "default"));

   14 // returns user_name

   15 

   16 Console.Write(collection.AuthorizedIdentity.GetAttribute("Mail", "default")); 

   17 // returns user’s email