WebAPI学习笔记(11)使用Bearer 认证调用API

调用:

Task<string> task = MethodHelper.GetBearerAccessToken();
string bearerAccessToken = task.Result;
string content = @"{...}";
HttpContent httpContent = new StringContent(content, Encoding.UTF8, "application/json");
using (HttpClient httpClient = new HttpClient())
{
  AuthenticationHeaderValue authentication = new AuthenticationHeaderValue("bearer", bearerAccessToken);
  httpClient.DefaultRequestHeaders.Authorization = authentication;
  httpClient.DefaultRequestHeaders.Add("user-key", "...");

  //发送
  var response = httpClient.PostAsync(config.BaseAddress, httpContent).Result;
  if (response.IsSuccessStatusCode)
  {
    //Successfully
  }
  else
  {
    //Failed
  }
}

生成Bearer Token方法:

public static async Task<string> GetBearerAccessToken()
{
  string clientId = ConfigurationManager.AppSettings["...ClientId"].ToString();
  string clientSecret = ConfigurationManager.AppSettings["...BearerClientSecret"].ToString();
  string instance = ConfigurationManager.AppSettings["...BearerInstance"].ToString();
  string tenantId = ConfigurationManager.AppSettings["...BearerTenantId"].ToString();
  string resourceId = ConfigurationManager.AppSettings["...BearerResourceId"].ToString();
  string authority = string.Format(CultureInfo.InvariantCulture, instance, tenantId);

  IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
                                                .WithClientSecret(clientSecret)
                                                .WithAuthority(new Uri(authority))
                                                .Build();

  string[] resourceIds = new string[] { resourceId };

  AuthenticationResult result = null;
  try
  {
    result = await app.AcquireTokenForClient(resourceIds).ExecuteAsync().ConfigureAwait(false);
    return result.AccessToken;
  }
  catch (Exception ex)
  {
    throw;
  }
}
原文地址:https://www.cnblogs.com/61007257Steven/p/12991189.html