【问题标题】:Simple Odata Client - How to add oAuth Token in each request header?简单 Odata 客户端 - 如何在每个请求标头中添加 oAuth 令牌?
【发布时间】:2017-06-11 13:20:20
【问题描述】:

在 Microsoft oData v4 代理客户端中,有一个选项可以将身份验证令牌添加到每个请求中。可以通过以下方式实现:

var container = new Default.Container(new Uri(http://localhost:9000/));

//Registering the handle to the BuildingRequest event. 
container.BuildingRequest += (sender, e) => OnBuildingRequest(sender, e, accessToken);


//Every time a OData request is build it adds an Authorization Header with the acesstoken 
private static void OnBuildingRequest(object sender, BuildingRequestEventArgs e, TokenResponse token)
{
 e.Headers.Add("Authorization", "Bearer " + token.AccessToken);
}

如何使用简单的 odata 客户端做同样的事情?

【问题讨论】:

    标签: c# oauth-2.0 access-token auth-token simple.odata.client


    【解决方案1】:

    显然我应该解释为什么这是答案。

    说明:这是为 Simple ODataClient 添加令牌的方式。

    var settings = new ODataClientSettings(new Uri("http://localhost:9000/"));
    settings.BeforeRequest += delegate(HttpRequestMessage message)
    {
        message.Headers.Add("Authorization", "Bearer " + token.AccessToken);
    };
    
    var client = new ODataClient(settings);
    

    【讨论】:

    • 请考虑添加对为什么这就是答案的解释。
    【解决方案2】:

    不是使用委托方法来拦截并在每个 Http 调用上添加 Authorization 标头,更清晰/更清洁的解决方案是使用 HttpClient 实例实例化 ODataClient。

    这还允许您控制 HttpClient 生命周期并重新使用它(无论如何您都应该这样做!)否则 ODataClient 将在每次调用时创建一个新的 HttpClient 实例,这只是效率低下并导致大量流失套接字层。通常不是问题,但可以处理大量代码,所以这只是一个好习惯。

    以下代码是使用 Azure AD OAuth2 令牌连接到 Dynamics 365 OData Web API 的 .Net 核心应用程序的摘录。

            httpClient.BaseAddress = new Uri(yourODataServiceRootURL);
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", yourBearerAccessToken);
    
            //Use the httpClient we setup with the Bearer token header
            var odataSettings = new ODataClientSettings(httpClient, new Uri("api/data/v9.1", UriKind.Relative));
    
            var odataClient = new ODataClient(odataSettings);
    

    【讨论】:

      猜你喜欢
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      相关资源
      最近更新 更多