Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用客户端证书身份验证通过TFS API连接到TFS_Tfs_Client Certificates_Tfs Sdk_X509certificate2 - Fatal编程技术网

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

使用客户端证书身份验证通过TFS API连接到TFS,tfs,client-certificates,tfs-sdk,x509certificate2,Tfs,Client Certificates,Tfs Sdk,X509certificate2,我想从非加入域的计算机(Azure角色)连接到我的TFS,因此该计算机必须以某种方式对我的TFS进行身份验证。我知道如何使用用户名+密码,但我不想把它保存在机器上 因此,我想为域用户颁发客户端证书,将其安装在Azure角色上,并使用它进行连接 上面的文章说要使用tfpt-tweakui(which),但它没有任何用户界面 但无论哪种方式,我都希望使用TFSAPI进行连接。但是,我不知道如何: // ------- I know username+password... -------------

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

因此,我想为域用户颁发客户端证书,将其安装在Azure角色上,并使用它进行连接

上面的文章说要使用
tfpt-tweakui
(which),但它没有任何用户界面

但无论哪种方式,我都希望使用TFSAPI进行连接。但是,我不知道如何:

// ------- 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);
/----我知道用户名+密码-------------------
var NetCreds=new System.Net.NetworkCredential(“用户名”、“密码”);//这里没有证书
var collection2=新的TfsTeamProjectCollection(新Uri(“myuri”)、新的TfsClientCredentials(新的WindowsCredentials(NetCreds));
//------我知道如何获得证书--------
var certStore=new X509Store(StoreName.My,StoreLocation.LocalMachine);
打开(OpenFlags.ReadOnly);
var certCollection=certStore.Certificates.Find(X509FindType.FindByThumbprint,“Thumbprint-that-I-ll-provide”,有效:true);
X509Certificate2 cert=certCollection.OfType().Single();
//-----但如何与之连接------------------
var TfsCreds=新的TfsClientCredentials(证书);//不,没有这样的方法。。。
var collection=new-tfstreamprojectcollection(“myuri”,TfsCreds);

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

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


TFS 2010的一个变化是,服务器端较旧的tfsadminutil configureconnections命令已替换为tfsconfig certificates()。在客户端,tf certificates命令取代了tfpt tweakui。

Epilogue-它可以工作。我需要证书的CA位于计算机的受信任根CA中。它可以让我的所有用户在浏览器中看到客户端证书提示,但我可以接受。