我如何确定熊令牌失败的原因

How can I determine why a bear token failed

运行 一个基本的 ASP.NET 核心 RESTful 服务器,我使用我在端点上提供的 JWT 令牌保护我的端点(这是概念证明此时此刻)。当我使用 Postman 进行测试时,我能够正确地进行身份验证,但是,来自控制台应用程序,得到 401,未经授权。

这是我在 ServiceExtensions class 中的内容:

public static IServiceCollection ConfigureJwtAuthentication(this IServiceCollection services,
            IConfiguration config)
        {
            var section = config.GetSection("Jwt");
            var jwtOptions = section.Get<JwtConfigOptions>();

            services.AddAuthentication(options =>
                {
                    options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
                    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;

                })
                .AddJwtBearer(options =>
                {
                    //options.Authority = jwtOptions.AuthorityUrl;
                    options.RequireHttpsMetadata = false;
                    options.TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidateIssuer = true,
                        ValidateAudience = true,
                        ValidateLifetime = true,
                        ValidateIssuerSigningKey = true,

                        ValidIssuer = jwtOptions.Issuer,
                        ValidAudience = jwtOptions.Audience,
                        IssuerSigningKey = jwtOptions.SymmetricSecurityKey
                    };
                });

            return services;
        }

这是我的 JwtConfigOptions class:

public class JwtConfigOptions
    {
        public string Key { get; set; }
        public string Issuer { get; set; }
        public string Audience { get; set; }
        public string AuthorityUrl { get; set; }
        public string AudienceUrl { get; set; }
        public SymmetricSecurityKey SymmetricSecurityKey => new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Key));
    }

并且具有 appsettings.json 中的值,因此我使用与审查令牌相同的值来创建。

有什么方法可以记录给定令牌被拒绝的原因吗?

我找到了答案。我发现 this site 具有 link 到 github 解决方案,该解决方案具有 Microsoft.AspNetCore.Authentication.JwtBearer 程序集中项目的源代码。我附加到 JwtBearerHandler 项目并且能够单步执行代码。原来我在 header 中错误地编码了不记名令牌。实际上有正确的代码注释掉 /redface

之前的行