使用外部权限的 JWT 验证不起作用。 ASP.NET 核心 3.0

JWT validation with external authority doesn't work. ASP .NET Core 3.0

我正在尝试使用带有 IdentityServer4 的外部服务来授权我的请求。我使用以下代码

services.AddAuthentication("Bearer")
    .AddJwtBearer("Bearer", options =>
    {
        options.Authority = Configuration["IdentityUrl"];
        options.RequireHttpsMetadata = false;

        options.Audience = "myapi";
    });

我使用令牌客户端获得了我的令牌

var tokenResponse = await tokenClient.RequestPasswordTokenAsync(
       new PasswordTokenRequest
       {
           ClientId = clientId,
           ClientSecret = clientSecret,
           GrantType = GrantTypes.Password,
           Address = discoveryDocument.TokenEndpoint,
           UserName = user.UserName,
           Password = user.PasswordHash,
       });

它工作并给我令牌,但是当我尝试通过将此令牌包含在授权中来授权任何请求时 header 它给了我 401,没有任何解释。我在身份服务器应用程序或我的客户端应用程序的输出中看不到任何内容。 这就是我在邮递员中测试授权所做的

有什么问题以及如何调试的想法吗?

试着看看日志说了什么?

或者尝试在 AddJwtBearer 选项中将其设置为 true,然后查看来自 API 的响应以查看它是否包含有关失败的一些其他详细信息。

options.IncludeErrorDetails = true;

它有效,您应该会看到一个额外的 WWW-authenticate header,例如:

HTTP/1.1 401 Unauthorized
Date: Sun, 02 Aug 2020 11:19:06 GMT
WWW-Authenticate: Bearer error="invalid_token", error_description="The signature is invalid"