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;
      }
    }
  • 相关阅读:
    最优装载(二分答案)
    最小生成树
    hibernate映射实体类查询时数据库空字段赋值给实体类报错的问题
    'hibernate.dialect' must be set when no Connection avalable
    简单了解一下oracle中的显示游标和存储过程
    oracle中的预定异常和自定义异常
    PL/sql中如何声明变量,常量,控制语句及for,loop,while和顺序控制的使用
    简单了解,使用oracle中的索引,表分区
    oracle中序列,同义词的创建
    数据库权限管理
  • 原文地址:https://www.cnblogs.com/61007257Steven/p/12991189.html
Copyright © 2011-2022 走看看