zoukankan      html  css  js  c++  java
  • 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;
      }
    }
  • 相关阅读:
    duilib中各控件响应的消息类型
    CoInitialize()、CoInitializeEx()和AfxOleInit()区别联系
    Linux下反斜杠号""引发的思考
    人生规划和GTD——“知”、“得”与“合”
    一次失败的面试——IBM电话面试
    Duilib介绍以及各个类的简介
    Linux与Windows中动态链接库的分析与对比
    VC++创建、调用dll的方法步骤
    网络对抗 Exp0 Kali安装 Week1
    2018-2019-1 20165226_20165310_20165315 实验五 通讯协议设计
  • 原文地址:https://www.cnblogs.com/61007257Steven/p/12991189.html
Copyright © 2011-2022 走看看