我如何确定熊令牌失败的原因
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
之前的行
运行 一个基本的 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
之前的行