JwtBearerDefaults及其AuthenticationScheme字段的作用是什么
JwtBearerDefaults 类及对应 AuthenticationScheme 字段作用
JwtBearerDefaults 类定位
这是ASP.NET Core JWT Bearer认证内置的静态常量类,里面统一存放JWT Bearer认证流程用到的固定默认值,核心作用就是替代开发者硬编码字符串,减少拼写错误,统一配置口径。
JwtBearerDefaults.AuthenticationScheme 字段作用
这个字段是类里最常用的常量,值固定为"Bearer",具体作用分两个场景:
- 作为
AddAuthentication()的入参时,是给认证系统指定全局默认认证方案:告诉ASP.NET Core后续请求没有特殊指定鉴权方案的话,默认就用JWT Bearer对应的处理器,去解析请求头里的Authorization字段、完成令牌校验、生成用户身份Claims凭据,对应你给出的代码里的用法。 - 多认证方案共存时(比如系统同时接入Cookie认证、JWT认证、自定义ApiKey认证),可以在
[Authorize]特性里通过这个常量显式指定接口使用的鉴权方案,比如[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)],不用手动写"Bearer"字符串,避免拼写错误导致鉴权失效。
补充说明:就算你不用这个常量,直接手写字符串
"Bearer"传进去,功能上也能正常跑,但用官方常量是公认的最佳实践:一方面避免手滑拼错字符串(比如把Bearer拼成Bearar这类低级错误排查起来非常浪费时间),另一方面如果后续组件版本调整默认方案名,业务代码不需要做任何修改就能适配。
参考配置代码逻辑拆解
// 注册认证服务,指定全局默认认证方案为JWT Bearer builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) // 注册JWT Bearer方案的认证处理器,配置令牌校验规则 .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, // 开启令牌签发方校验 ValidateAudience = true, // 开启令牌接收方校验 ValidateLifetime = true, // 开启令牌有效期校验 ValidIssuer = tokenOptions.Issuer, // 配置信任的合法签发方 ValidAudience = tokenOptions.Audience, // 配置信任的合法接收方 ValidateIssuerSigningKey = true, // 开启令牌签名校验 IssuerSigningKey = SecurityKeyHelper.CreateSecurityKey(tokenOptions.SecurityKey) // 配置用于验签的对称/非对称密钥 }; });
内容的提问来源于stack exchange,提问作者Burcu Taş
相关产品推荐
相关产品推荐

