Stu*_*ent 7 devops azure-devops azure-devops-rest-api
我正在尝试使用c#连接到以前称为TFS的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;
Run Code Online (Sandbox Code Playgroud)
我正在使用的图书馆
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;
Run Code Online (Sandbox Code Playgroud)
代码会提示登录屏幕,如果我输入密码,则auth仍然无效.我不希望出现登录屏幕,只想用用户名和密码连接.
使用备用凭据,此方法正在运行,但这不是我的要求,我不能使用备用凭据.
我试过跟踪官方网站上的样本,但没有解决方案适用于新的DevOps.
任何解决方案如何在没有登录屏幕的情况下在新的DevOps中使用usernanme/password进行身份验证
该类TfsTeamProjectCollection来自旧的.Net库,尝试新的Azure DevOps .Net库,您可以通过以下几种方式进行身份验证:
NTLM
最基本的方法是构造一个完全不带参数的VssCredentials实例,而您将要使用的只是将其集成到身份验证/ NTLM中:
var visualStudioServicesConnection = new VssConnection(new Uri(baseUri), new VssCredentials());
Run Code Online (Sandbox Code Playgroud)
基本认证
VSTS和TFS还提供了利用基本身份验证(HTTP AUTH)的方法,您需要首先创建并启用它(请参阅VSTS准则),一旦完成,您就可以通过如下API来使用它们:
var visualStudioServicesConnection = new VssConnection(new Uri(baseUri), new VssBasicCredential(username, password));
Run Code Online (Sandbox Code Playgroud)
个人访问令牌
接下来是您可以按照VSTS准则轻松创建的个人访问令牌(PAT),并且这些PAT是一种使用细粒度和按访问令牌的安全范围与实际凭据分开进行身份验证的方法。简而言之,它允许您为每个用例甚至应用程序创建PAT,从而以安全且清晰分开的方式为应用程序或第三方代表您提供访问VSTS或TFS系统的权限。
要通过API使用这些密码,您使用与通过基本身份验证完全相同的机制,但是您根本不提供任何用户名(嗯-准确地说是一个空的用户名),而PAT本身用作密码:
var visualStudioServicesConnection = new VssConnection(new Uri(baseUri), new VssBasicCredential(string.Empty, pat));
Run Code Online (Sandbox Code Playgroud)
Visual Studio登录提示
此外,另一种身份验证方法是使用标准的VS登录提示,该提示同样很容易通过VssClientCredentials类公开:
var visualStudioServicesConnection = new VssConnection(new Uri(baseUri), new VssClientCredentials());
Run Code Online (Sandbox Code Playgroud)
OAuth验证
OAuth是一种广泛使用但实现起来较为繁琐的授权协议,但幸运的是,CodePlex上有专门针对VSTS / VSO的完整示例应用程序(也适用于内部部署)。
一旦有了相应的访问令牌,就可以使用VssOAuthCredential类将其用于VSTS / TFS :
var visualStudioServicesConnection = new VssConnection(new Uri(baseUri), new VssOAuthCredential(accessToken));
Run Code Online (Sandbox Code Playgroud)
Azure Active Directory身份验证
最后但并非最不重要的一点是,您可以通过VssAadCredential类利用Azure Active Directory身份针对VSTS或TFS系统进行身份验证:
var visualStudioServicesConnection = new VssConnection(new Uri(baseUri), new VssAadCredential(username, password));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |