【问题标题】:Error in JWT Remote Authentication using NetCore 2使用 Net Core 2 进行 JWT 远程身份验证时出错
【发布时间】:2018-06-03 09:53:16
【问题描述】:

我目前有两个不同的项目,一个是 MainAPI,它将公开我的 Web 客户端的功能,另一个是 AuthAPI,它处理所有的身份验证请求,全部使用 netcore 2 构建。

如果我直接调用 AuthAPI,它会根据需要处理请求。

当我尝试让 AuthAPI 对 MainAPI 请求进行身份验证时,它失败了,尽管我可以看到进出 AuthAPI 的请求。

这是我在 MainAPI Startup.cs 中的服务身份验证配置:

services.AddAuthentication(option =>
                option.DefaultAuthenticateScheme = "Bearer")
                .AddJwtBearer(options =>
                {
                    options.MetadataAddress = "http://localhost:5019/auth/api/info";
                    options.Authority = "http://localhost:5019";
                    options.Audience = AUDIENCE;
                    options.RequireHttpsMetadata = false;
                    options.SaveToken = true;

                    options.BackchannelHttpHandler = new BackChannelHttpHandler();

                    options.IncludeErrorDetails = true;

                });

这里是 BackChannelHttpHandler 类:

public class BackChannelHttpHandler : HttpMessageHandler
    {
        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {

           HttpClient client = new HttpClient(new HttpClientHandler(), disposeHandler: false);          
            client.DefaultRequestHeaders.Add("Accept", "application/json");
            var res = await client.GetAsync(request.RequestUri);
            return res;
        }
    }

我调用的控制器作为 Authorize 注释如下:

[Authorize(AuthenticationSchemes = "Bearer")]

至于 AuthAPI,我在 Startup.cs 中配置了 Cors:

    services.AddCors(options =>
    {
        options.AddPolicy("CorsConfig",
                        builder => builder
                           .AllowAnyOrigin()
                           .AllowAnyHeader()
                           .AllowAnyMethod()
                           .AllowCredentials()
                           .Build());
});

在 AuthAPI 控制器中,我还有 [EnableCors("CorsConfig")] 注释。

我可以调用 AuthAPI 控制器,它返回一个 HTTP-200,但在我的 MainAPI 中,授权过程中的某些内容被调用取消授权,我对 MainAPI 控制器的调用永远不会被执行。

我的问题是,我在 MainAPI 身份验证过程中做错了什么,它自己对令牌进行身份验证,并使请求无效。

【问题讨论】:

  • 您是否从 MainAPI 服务器调用 AuthAPI?通话看起来如何?

标签: c# authentication jwt asp.net-core-2.0


【解决方案1】:

注意这个参数options.Audience; 它应该有可用的端点。

或者您可以在应用程序之间共享密钥以提高工作效率。每个端点都可以从 token 中读取 payload,但只有 auth-server 可以生成 token。

【讨论】:

  • 据我所知,Audience 可以是任何字符串。我成功使用“用户”,包括 CORS 调用。
猜你喜欢
  • 2020-01-30
  • 2018-09-01
  • 2021-04-16
  • 2023-04-01
  • 2017-07-09
  • 2020-04-06
  • 2019-10-30
  • 2017-11-05
  • 2018-07-21
相关资源
最近更新 更多