asp.net-core - JWT 发行者无效的 Asp.Net Core
问题描述
我的 JWT 没有得到验证,因为颁发者声明失败并且我不知道为什么创建令牌看起来像这样:
var key = Encoding.UTF8.GetBytes(_config["JWT:Secret"]);
var signingCredentials = new SigningCredentials(
new SymmetricSecurityKey(key),
SecurityAlgorithms.HmacSha256Signature);
var token = new JwtSecurityToken(
issuer: _config["JWT:Issuer"],
claims: claims,
notBefore: DateTime.Now,
expires: DateTime.Now.AddMinutes(20),
signingCredentials: signingCredentials
);
在我的 Startup.cs 文件中,我验证了令牌:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
{
options.IncludeErrorDetails = true;
options.RequireHttpsMetadata = false;
options.ClaimsIssuer = Configuration["JWT:Issuer"];
options.TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(Configuration["JWT:Secret"])),
// works when set to false
ValidateIssuer = true,
ValidateAudience = false,
ValidateLifetime = true
};
});
那么为什么我会收到这个错误:
Bearer error="invalid_token", error_description="发行者'LoggerApp'无效"
注意:_config 和 Configuration 是同一个依赖
解决方案
您应该设置ValidIssuer
属性TokenValidationParameters
以确保颁发者验证有效:
ValidateIssuer = true,
ValidIssuer = Configuration["JWT:Issuer"],
推荐阅读
- excel - 找出日期的差距
- javascript - webkit.messageHandlers 用于 React 将 JavaScript 注入 Swift
- python - 指定 dtype 时,Python pandas read_csv 出现错误数据问题
- odata - 带有 $expand 的 OData 不起作用
- twitter-bootstrap-3 - 格式化引导日期选择器的日期
- gulp-watch - Gulp4 watch 对变化没有反应
- stomp - Websockets 连接在 Pivotal Cloud 上失败,但在 localhost 上有效
- linux - 如何在 linux 中重建热备 postgresql 数据库
- html - 如何用 HTML ASCII 码显示字符串?
- c++ - FLTK 中的线程