我已经找到了如何使用给定的用户名/密码从我的应用程序向TFS进行身份验证。 我想使用REST服务。
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;
}
此解决方案工作正常,但如果我创建一个新的工作项,则由&#34; username&#34;创建。 但我想通过非个性化用户创建工作项,所以我想看看&#34; seconduser&#34;作为创作者,如果我看一下TFS中的工作项目。
我在谷歌上搜索了很多但却找不到一个例子......
VSTS更新:
尝试实施后我发现了这个:
&#34;出于安全原因(以及合规性和许多其他原因),Visual Studio Online&#34;不支持模拟标头。
奇怪的是,该错误消息目前具有误导性,它告诉我在VSTS中实际禁用整个模拟功能时需要特殊权限。
答案 0 :(得分: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);
答案 1 :(得分:0)
根据REST API Reference for VS Team Services and TFS,目前没有类似于TFS模拟的REST API。由于.net api仍然可以与VSTS一起使用大多数功能(不支持vNext构建等),您可以将.net api作为替代方案。