• 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;
      }
    }
  • 相关阅读:
    大道至简读后感
    机器学习十讲(一)
    第一个TensorFlow的简单例子
    初识深度学习
    如何使用本地的Navicat连接服务器中的Mysql
    阿里云ECS-安装Tomcat
    阿里云ECS-CentOS 8上安装MySQL 8.0
    阿里云ECS--CentOS8安装jdk1.8
    进度报告十(重大技术需求)
    进度报告九 (重大技术需求调研)
  • 原文地址:https://www.cnblogs.com/61007257Steven/p/12991189.html
Copyright © 2020-2023  润新知