【问题标题】:Call REST API Client from another API with JWT token使用 JWT 令牌从另一个 API 调用 REST API 客户端
【发布时间】:2019-02-27 14:13:11
【问题描述】:

我有一个带有两个 API 的平台。我们称它们为 API A 和 API B。我有一个案例,我必须从 API A 调用 API B,并且都需要一个单独的用户。所以我在那里添加了策略和 JWT 令牌。

当然,两个 API 中的策略是相同的。

因此,我使用授权令牌在 API A 中调用方法 A。方法工作正常并从 API B 调用方法 B,但 HTTP 客户端没有获得令牌,因为没有填充任何地方..

我正在尝试在 API A 中填写 Startup.cs,使用令牌的 httpClient,但我不知道如何使用令牌获取 HttpContext。

这就是我尝试在 HttpClient 中填充令牌的方式,但我现在不完全正确,我应该如何从上下文中获取令牌。

services.AddHttpClient("Api_B_Client", x =>
        {
            x.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "");
        });

在上下文中存在token,因为我是这样解析的:

services.AddAuthentication().AddJwtBearer(cfg =>
        {
            SetupJwtBearerWithDecryption(cfg);
        });

在 SetupJwtBearerWithDecryption 方法中,我有一个 OnMessageReceived 事件,我正在解析令牌

【问题讨论】:

  • 可以从 api b 的 Request.header 中读取

标签: .net-core


【解决方案1】:

我的问题解决方案是从配置 HttpContextAccessor 中获取,并且该对象具有我正在寻找的授权令牌

services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();

        services.AddHttpClient("client", x =>
        {
            var context = Configuration.Get<HttpContextAccessor>();
            x.DefaultRequestHeaders.Authorization = 
                new AuthenticationHeaderValue("Bearer", context.HttpContext.Request.Headers["Authorization"]);
        });

【讨论】:

    猜你喜欢
    • 2017-04-20
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多