[英]Retrieve Accesstoken for Azure DevOps REST API 5.1
在我们的应用程序中,我们想要检索一个访问令牌。 使用此令牌,我们希望使用 Azure DevOps rest API 5.1 执行某些操作。
我已经尝试了 Microsoft 为 OAuth2 ( https://docs.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/oauth?view=azure-devops ) 和 PAT 提供的建议文档。 结果总是返回 203 响应。 有人知道这个问题的解决方法吗?
根据我的测试,我们可以使用 Azure Ad 访问令牌调用 Azure DevOps rest API。 详情请参考以下步骤 1. 注册 Azure AD 应用程序
# get code
GET https://login.microsoftonline.com/{tenant}/oauth2/authorize?
client_id=<your app client id>
&response_type=code
&redirect_uri=<>
&response_mode=query
&resource=499b84ac-1321-427f-aa17-267ca6975798
&state=12345
#Get token
Post https://login.microsoftonline.com/{tenant}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&client_id=<>
&code=<>
&redirect_uri=https%3A%2F%2Flocalhost%3A12345
&resource=499b84ac-1321-427f-aa17-267ca6975798
&client_secret=<>
调用API如何通过认证,可以参考: Authenticate
以下是将 OAuth2 与 ADAL 结合使用的示例: https : //github.com/microsoft/azure-devops-auth-samples/blob/master/ManagedClientConsoleAppSample/Program.cs
这是使用 PAT 的快速示例:
class Program
{
public static string personalaccesstoken = "erxvtg*****6aljqa";
public static string organization = "jack0503";
public static string project = "keyvault";
static void Main(string[] args)
{
Console.ReadLine();
GetProjects();
Console.ReadLine();
}
public static async void GetProjects()
{
try
{
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(
new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
Convert.ToBase64String(
System.Text.ASCIIEncoding.ASCII.GetBytes(
string.Format("{0}:{1}", "", personalaccesstoken))));
using (HttpResponseMessage response = await client.GetAsync(
$"https://dev.azure.com/{organization}/_apis/projects"))
{
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.