gpt4 book ai didi

azure-devops - 开发运维 : Non-Interactive login in new DevOps(VSTS) not working getting error 'TF30063: You are not authorized to access

转载 作者:行者123 更新时间:2023-12-04 05:11:56 24 4
gpt4 key购买 nike

我正在尝试使用 c# 连接到以前称为 VSTS 的 Azure DevOps。我想在没有 azure DevOps 登录屏幕的情况下连接到它。我目前正在尝试以下代码,但有些代码无法正常工作

        NetworkCredential netCred = new NetworkCredential("test@hotmail.com", "test");
Uri tfsuri = new Uri("https://dev.azure.com/test10");
VssBasicCredential bsCred = new VssBasicCredential(netCred);
VssCredentials vssCred = new VssClientCredentials(bsCred);

TfsTeamProjectCollection collection = new TfsTeamProjectCollection(tfsuri, vssCred);

collection.Authenticate();

var witClient = collection.GetClient<ProjectHttpClient>();
var listOfProjects = witClient.GetProjects().Result;

我正在使用的库
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Core.WebApi;
using Microsoft.VisualStudio.Services.Client;
using Microsoft.VisualStudio.Services.Common;
using Microsoft.VisualStudio.Services.Operations;
using Microsoft.VisualStudio.Services.WebApi;
using Microsoft.TeamFoundation.WorkItemTracking.Client;
using Microsoft.TeamFoundation.WorkItemTracking.WebApi;

该代码会提示一个登录屏幕,如果我输入密码,身份验证仍然不起作用。我不想出现登录屏幕,只想连接用户名和密码。

使用备用凭据,此方法有效,但这不是我的要求,我不能使用备用凭据。

我已尝试遵循 official site 中的示例但没有解决方案适用于新的 DevOps。

任何解决方案如何在没有登录屏幕的情况下在新的 DevOps 中使用用户名/密码进行身份验证

最佳答案

类(class)TfsTeamProjectCollection来自旧的 .Net 库,尝试新的 Azure DevOps .Net libraries ,您可以通过以下几种方式进行身份验证:

NTLM

最基本的一个是构建一个根本没有参数的 VssCredentials 实例,您将使用的只是集成身份验证/NTLM:

var visualStudioServicesConnection = new VssConnection(new Uri(baseUri), new VssCredentials());

基本认证

VSTS 和 TFS 还提供了使用基本身份验证 (HTTP AUTH) 的方法,您需要先创建和启用 ( see VSTS guidelines),一旦完成,您可以通过 API 使用它们,如下所示:
var visualStudioServicesConnection = new VssConnection(new Uri(baseUri), new VssBasicCredential(username, password));

个人访问 token

接下来是个人访问 token (PAT),您可以 easily create遵循 VSTS 指南,这些 PAT 是一种与您的实际凭据分开进行身份验证的方法,具有细粒度和每个访问 token 的安全范围。简而言之,它允许您为每个用例甚至应用程序创建 PAT,从而启用一种安全且明确分离的方式,让应用程序或第 3 方代表您访问您的 VSTS 或 TFS 系统。

要通过 API 使用这些,您使用与通过基本身份验证完全相同的机制,但您只是不提供任何用户名(嗯 - 准确地说是空的),并且 PAT 本身用作密码:
var visualStudioServicesConnection = new VssConnection(new Uri(baseUri), new VssBasicCredential(string.Empty, pat));

Visual Studio 登录提示

此外,另一种身份验证方法是使用标准的 VS 登录提示,该提示同样简单并通过 VssClientCredentials 公开。类(class):
var visualStudioServicesConnection = new VssConnection(new Uri(baseUri), new VssClientCredentials());

OAuth认证

OAuth是一种广泛使用但实现起来稍微繁琐的授权协议(protocol),但幸运的是,CodePlex 上有一个专门用于 VSTS/VSO(也适用于本地)的完整示例应用程序。

获得相应的访问 token 后,您可以使用 VssOAuthCredential 将其用于 VSTS/TFS类(class):
var visualStudioServicesConnection = new VssConnection(new Uri(baseUri), new VssOAuthCredential(accessToken));

Azure Active Directory 身份验证

最后但同样重要的是,您可以利用 Azure Active Directory 身份通过 VssAadCredential 类对 VSTS 或 TFS 系统进行身份验证:
var visualStudioServicesConnection = new VssConnection(new Uri(baseUri), new VssAadCredential(username, password));

关于azure-devops - 开发运维 : Non-Interactive login in new DevOps(VSTS) not working getting error 'TF30063: You are not authorized to access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53289522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com