使用客户端证书身份验证通过TFS API连接到TFS

时间:2015-02-10 16:52:29

标签: tfs tfs2013 client-certificates tfs-sdk x509certificate2

我想从非加入域的计算机(Azure角色)连接到我的TFS,因此该计算机必须以某种方式对我的TFS进行身份验证。我知道怎么用用户名+密码来做,但我不想把它保存在机器上。

因此,我想Configure my TFS for client certificate authentication,为域用户颁发客户端证书,将其安装在Azure角色上,并使用它进行连接。

上面的文章说要使用tfpt tweakuimay actually be tfpt connections},但它没有任何用户界面。

但无论如何,我想使用TFS API进行连接。但是,我不知道如何:

// ------- I know username+password... -------------------
var NetCreds = new System.Net.NetworkCredential("username", "password");  // No certificate here
var collection2 = new TfsTeamProjectCollection(new Uri("myuri"), new TfsClientCredentials(new WindowsCredential(NetCreds)));

// ------- And I know how to get a certificate... --------
var certStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);
certStore.Open(OpenFlags.ReadOnly);
var certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, "Thumbprint-that-I'll-provide", validOnly: true);
X509Certificate2 cert = certCollection.OfType<X509Certificate2>().Single();

// -------- But how to connect with it? ------------------
var TfsCreds = new TfsClientCredentials(cert); // Nope, no such method...
var collection = new TfsTeamProjectCollection("myuri", TfsCreds);

那么,我如何使用客户端证书身份验证连接到TFS?

1 个答案:

答案 0 :(得分:2)

该页面需要更新。最后有一个重要的评论说明如下。您将需要使用这些较新的命令。

TFS 2010的一个变化是,服务器端的旧tfsadminutil configureconnections命令已替换为tfsconfig证书(http://msdn.microsoft.com/en-us/library/ee349260.aspx)。在客户端,tf certificates命令替换了tfpt tweakui。