使用 Windows Auth 在 Azure DevOps Server 中进行身份验证

问题描述 投票:0回答:1

我不明白如何使用 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 类中获取一些数据并将其添加到我的请求标头中吗?

c# azure asp.net-web-api azure-devops windows-authentication
1个回答
0
投票

这是我的示例,在托管我的 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());

        }
    }
}

希望样品能有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.