C# CS0029:SymmetricSecurityKey无法转换为IssuerSigningKeyResolver
错误原因
CS0029编译错误来自属性误用:
IssuerSigningKeyResolver是委托类型,用于实现动态解析签名密钥的自定义逻辑,不能直接赋值SymmetricSecurityKey实例- 固定对称密钥验证JWT的常规场景,应该使用
IssuerSigningKey属性,该属性的参数类型就是SecurityKey,可以直接接收你创建的SymmetricSecurityKey对象。
修复方式
将错误行的IssuerSigningKeyResolver替换为IssuerSigningKey即可,修正后的完整实现代码:
using System.Text; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.IdentityModel.Tokens; namespace API.Extensions.DependencyInjection { public static class IdentityServiceExtensions { public static IServiceCollection AddIdentityServices(this IServiceCollection services, IConfiguration config) { services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(config["TokenKey"])), ValidateIssuer = false, ValidateAudience = false, }; }); return services; } } }
补充说明:
IssuerSigningKeyResolver仅在需要动态匹配签名密钥的场景使用,比如多租户系统下不同租户使用不同密钥签发Token的情况,单服务固定密钥场景不需要用到这个属性。
内容的提问来源于stack exchange,提问作者TrippyMayne_
相关产品推荐
相关产品推荐

