使用 HttpClient 的 azure DevOps 基本身份验证(失败)

azure DevOps basic Auth using HttpClient (FAILED)

我正在尝试使用 HttpClient 对我的 Azure 开发组织进行身份验证。 但它总是失败。

通过身份验证取得成功的唯一方法是像这样使用客户端库:

VssConnection connection = new VssConnection(new Uri(azureDevOpsOrganizationUrl), new VssClientCredentials());

希望有人能告诉我仅使用用户名和密码进行身份验证的正确方法是什么。

更新: 我也试过这样:

        string SecurelyStoredUserName = "EmailAddressAsUserName";
        SecureString SecurelyStoredPassword = new SecureString();

        string PWD = "MyVerySecuredPassword";
        PWD.ToList().ForEach(SecurelyStoredPassword.AppendChar);

        NetworkCredential myCred = new NetworkCredential(
        SecurelyStoredUserName, SecurelyStoredPassword, azureDevOpsOrganizationUrl);


        string svcCredentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(SecurelyStoredUserName + ":" + SecurelyStoredPassword));

        HttpClientHandler handler;
        handler = new HttpClientHandler() { Credentials = myCred };
        HttpClient client;
        client = new HttpClient(handler);
        client.BaseAddress = new Uri(azureDevOpsOrganizationUrl);
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Add("Accept", "application/json");
        client.DefaultRequestHeaders.Add("Authorization", "Basic " + svcCredentials);

那是我所做的,但是当我尝试执行 get/post 时,我收到错误 401 未经授权

您无法将网络凭据发送到 Azure Devops。它不接受那种身份验证。您可以使用个人访问令牌,或使用 Active Directory API 来获取访问权限。

All is explained on the very first "Getting started" pages on how to use the Azure DevOps APIs.

一个complete sample for Interactive User+Pass auth is available here.

如果您试图代表用户,那么您可能需要重新考虑您的方法。