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; } }