3

我们正在尝试使用 TeamFoundationServer .net 控件在 c# 中对我们托管的TFS 服务帐户进行身份验证,这是我的代码:

NetworkCredential tfsCredential = new NetworkCredential(username, password);
TeamFoundationServer tfsServer = new TeamFoundationServer(tfsAddress, tfsCredential);

tfsServer.Authenticate();

请注意,这不是本地 TFS 服务器,它是tfspreview.com上的托管 TFS 服务,我们尝试使用 Windows Live 帐户和备用身份验证凭据登录,但每次我们尝试进行身份验证时,Internet Explorer 都会打开一个新的窗口并要求提供凭据。

如果我们使用 IE 提示符连接它可以工作,但我们希望存储凭据并连接到服务器,而不是每次都询问凭据,

4

3 回答 3

1

您可以在配置文件下配置基本身份验证,也可以使用服务凭据。这完全取决于您需要什么样的权限。基本身份验证在用户帐户下运行,这往往是不好的做法,而服务帐户具有提升的权限。

为 TF 服务配置基本认证

对于基本用户身份验证,您应该连接到 TF 服务并按照指示打开您的个人资料。您的个人资料上有一个“凭据”选项卡,可让您配置这些凭据。这对于通过 API 进行的每个用户访问是好的,但如果您想通过服务器或服务运行事物,则不好。

为 TF 服务配置基本认证

检索 TFS 服务凭证

我创建了一个名为TFS 服务凭据查看器的应用程序,它允许您检索 TF 服务实例的服务凭据。这与构建和测试服务器在本地配置它们以针对云工作时所做的事情相同。

检索 TFS 服务凭证

我希望这有帮助...

于 2013-07-30T23:13:03.780 回答
0

Tfspreview.com 现在支持基本身份验证,这将完全消除 IE 的显示。有关如何为您的 tfspreview.com 进行设置的详细信息,请参阅此处,然后使用您配置的用户名和密码。

于 2012-09-08T14:58:25.713 回答
0

您可以根据服务器的模拟尝试使用此代码

var serverUrl  = "";

ICredentials credentials = new NetworkCredential(username, password, domain);
ICredentialsProvider TFSProxyCredentials = new NetworkCredentialsProvider(credentials);

TfsTeamProjectCollection currentCollection = new TfsTeamProjectCollection(new Uri(serverUrl), credentials);


// Get the TFS Identity Management Service
IIdentityManagementService identityManagementService = currentCollection.GetService<IIdentityManagementService>();
// Look up the user that we want to impersonate
TeamFoundationIdentity identity = identityManagementService.ReadIdentity(IdentitySearchFactor.AccountName, username, MembershipQuery.None, ReadIdentityOptions.None);


// Open collection impersonated
TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri(serverUrl), credentials, TFSProxyCredentials, identity.Descriptor);

//For example we can access to service WorkItemStore 
var workItemStore = tfs.GetService<WorkItemStore>();
于 2012-09-07T15:50:29.383 回答