Asp.net azure DevOps使用HttpClient进行基本身份验证(失败)

Asp.net azure DevOps使用HttpClient进行基本身份验证(失败),asp.net,asp.net-web-api,azure-devops,dotnet-httpclient,azure-devops-rest-api,Asp.net,Asp.net Web Api,Azure Devops,Dotnet Httpclient,Azure Devops Rest Api,我正在尝试使用HttpClient对我的Azure开发人员组织进行身份验证。 但它总是失败 实现身份验证成功的唯一方法是使用如下客户端库: VssConnection connection = new VssConnection(new Uri(azureDevOpsOrganizationUrl), new VssClientCredentials()); string SecurelyStoredUserName = "EmailAddressAsUserName";

我正在尝试使用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);
希望有人能告诉我什么是正确的方式来验证使用用户名和密码只

更新: 我也试过这样:

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 Unauthorized

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

A


如果您试图以用户的名义行事,那么您可能需要重新考虑您的方法。

您能分享一下您在
HttpClient
上的尝试吗?@shaykibaramczyk是的,我编辑了我的邮件您是否使用了密码或个人访问令牌?Azure DevOps接受PAT而不是您的密码@LeoLiu MSFT是的,谢谢大家的帮助,我刚和PAT一起做了,效果很好:)