Search code examples
c#tfstfs-sdk

Make Changes to a TFS Work Item as a specific user


I am working on creating a Web application, which the users in my team will use to make changes to TFS Work Items. I am using TFS API for this..

In order to access the TFS Server , I used my credentials within the Web Application.

Now each time someone uses the application and makes changes to TFS work items, it shows as if I have made changes to these items since my credentials are being used in the application.

Is there a way I can use the credentials of the person logging into my application to show up on TFS as the person making the changes ?


Solution

  • You need to use the 'make requests on behalf of others' functionality. You can impersonate another user by following:

    public void Impersonation(Uri serverUri,string userToImpersonate)
    {
        // Read out the identity of the user we want to impersonate
        TeamFoundationIdentity identity = ims.ReadIdentity(IdentitySearchFactor.AccountName, 
            userToImpersonate,
            MembershipQuery.None, 
            ReadIdentityOptions.None);
    
        tfs_impersonated = new TfsTeamProjectCollection(serverUri, identity.Descriptor);
    
        GetAuthenticatedIdentity(tfs_impersonated);
    
        // Use this tfs_impersonated object to communicate to TFS as the other users.
    }
    

    And make sure your account running the website has the permission to "make requests on behalf of others":

    enter image description here http://www.codeproject.com/Articles/104019/TFS-API-Part-TFS-Impersonation