我正在尝试连接到TFS并使用以下代码对用户进行身份验证。但是我收到了错误:
TF30063:您无权访问https://test.visualstudio.com/DefaultCollection。
var netCred = new NetworkCredential("test@live.in", "password");
var windowsCred = new WindowsCredential(netCred);
var tfsCred = new TfsClientCredentials(windowsCred);
tfsCred.AllowInteractive = false;
var tpc = new TfsTeamProjectCollection(tfsUri, tfsCred);
tpc.Authenticate();
当我在代码下面运行时,它会提示我必须输入凭据的窗口。
var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("https://test.visualstudio.com/DefaultCollection"));
var store = (WorkItemStore)tfs.GetService(typeof(WorkItemStore));
此应用程序将由外部人员使用,我需要静默登录TFS。
我在下面看到一个解决方案,但我不能要求每个用户都这样做。
请建议我解决一下。
答案 0 :(得分:2)
Your users will have to log on using the Live ID/MSA一次,他们可以选中保存凭据的框,以便将来不会提示他们。在未来,Visual Studio Online可能会转向使用Azure Active Diectory / Azure访问控制服务的解决方案,这将允许您使用其他凭据类型,现在您需要让您的用户启用基本身份验证或让他们进行身份验证到VSO一次,让他们检查“保存凭据”复选框,以便将来不会提示他们。
Uri collectionUri = new Uri("https://youraccount.visualstudio.com:443/defaultcollection");
UICredentialsProvider credentialProvider = new UICredentialsProvider();
var tfs = TfsTeamProjectCollectionFactory
.GetTeamProjectCollection(collectionUri, new UICredentialsProvider());
tfs.EnsureAuthenticated();
如果您想使用基本凭据进行连接,您也可以使用此代码(在为您要使用的帐户启用基本凭据后):
NetworkCredential netCred = new NetworkCredential(
"someone@yahoo.com",
"password");
BasicAuthCredential basicCred = new BasicAuthCredential(netCred);
TfsClientCredentials tfsCred = new TfsClientCredentials(basicCred);
tfsCred.AllowInteractive = false;
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(
new Uri("https://YourAcct.visualstudio.com/DefaultCollection"),
tfsCred);
tpc.Authenticate();