2016-05-17 8 views
0

私は、指定したユーザー名/パスワードで私のアプリケーションからTFSへの認証方法を発見しました。 RESTサービスを使用したいと思います。個人化を使用した(Team Foundation Server)の認証

public static void BasicAuthRestSample() 
    { 
     // Create instance of VssConnection using basic auth credentials. 
     // For security, ensure you are connecting to an https server, since credentials get sent in plain text. 
     VssConnection connection = new VssConnection(new Uri(collectionUri), new VssCredentials(new WindowsCredential(new NetworkCredential(username, password)))); 

     WorkItemTrackingHttpClient witClient = connection.GetClient<WorkItemTrackingHttpClient>(); 
     List<QueryHierarchyItem> items = witClient.GetQueriesAsync(teamProjectName).Result; 
    } 

この解決策はうまくいきますが、新しい作業項目を作成すると「username」で作成されます。 しかし、私は非個人化されたユーザーによって作業項目を作成したいので、私はTFSの作業項目を見ると "seconduser"を作成者として見たいと思っています。

私は多くのことをグーグルましたが、一例を見つけることができません.... VSTSのため

アップデート:私はこれを発見した

実装しようとした後:

「セキュリティのために理由(およびコンプライアンスとその他のさまざまな理由)、偽装ヘッダーはVisual Studio Onlineではサポートされていません "

奇妙なことに、現在誤解を招くエラーメッセージが表示されます特別な許可が必要ですが、偽装の機能全体が実際にはVSTSで無効になっています。

答えて

0

REST API Reference for VS Team Services and TFSによると、TFSの偽装に似たいかなるREST APIは今はありません。 .net apiはvNextビルドなどをサポートしていないほとんどの機能でVSTSと引き続き動作するため、代わりに.net apiを使用することができます。

+0

今のところTfsTeamProjectCollectionにとどまります... –

0

TfsTeamProjectCollection constructor accepting an IdentityDescriptorを使用してください。 詳細はIntroducing TFS Impersonationです。ポストから

スニペット // Get the TFS Identity Management Service IIdentityManagementService identityManagementService = currentUserCollection.GetService<IIdentityManagementService>(); // Look up the user that we want to impersonate TeamFoundationIdentity identity = identityManagementService.ReadIdentity( IdentitySearchFactor.AccountName, username, MembershipQuery.None, ReadIdentityOptions.None); TfsTeamProjectCollection impersonatedCollection = new TfsTeamProjectCollection(currentUserCollection.Uri, identity.Descriptor);

+0

ありがとう、これはSOAPオブジェクトモデルのためのものですが、私の質問はRESTサービスのHttpClientに関するものでした...(TeamServicesでも同じコードを使用したい理由) –

関連する問題