我不明白如何使用 Windows Auth 对 Azure DevOps Server 进行身份验证。
我创建了一个 ASP.NET Web API 项目,该项目使用 Windows Auth 来识别用户 (https://learn.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth#kestrel)。
但是如何使用已识别用户从 Azure DevOps Server 获取数据?文档说您可以使用“Windows Auth”进行身份验证(https://learn.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/oauth)。
[HttpGet]
public string Get()
{
var userName = User.FindFirstValue(ClaimTypes.Name);
// It's work and contained windows username
// User - HttpContext.User (ClaimsPrincipal)
// But what to do next?! How can I send a request using this user?
// https://{azure}/{org}/_apis/projects?api-version=6.0
}
我应该从 ClaimsPrincipal 类中获取一些数据并将其添加到我的请求标头中吗?
这是我的示例,在托管我的 Azure DevOps 服务器的 Windows 计算机上使用本地使用帐户(用户名
Alvin
及其密码)进行身份验证,该服务器调用此 API;
我成功将该项目列入我的收藏。
using System;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
namespace TFSWindowsAuthApp
{
class Program
{
static async Task Main()
{
var baseAddress = new Uri("http://aztfs2022/DefaultCollection/");
var networkCredential = new NetworkCredential("Alvin", "Azxxxxx");
var httpClientHandler = new HttpClientHandler { Credentials = networkCredential };
var client = new HttpClient(httpClientHandler) { BaseAddress = baseAddress };
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync("_apis/projects?api-version=7.0").Result;
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
}
}
}
希望样品能有所帮助。