Search code examples
c#token

Can not Implicitly Convert SymmetrySecurityKey Type


Plz any one help me i can't find the problem!!! Can not Implicitly Convert SymmetrySecurityKey Type

  var key = Encoding.ASCII.GetBytes(Configuration.GetSection("AppSettings:Token").Value);
            services.AddDbContext<DataContext>(x => x.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
            services.AddMvc();
            services.AddCors();
            services.AddScoped<IAuthRepository, AuthRepository>();
            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKeys = new SymmetricSecurityKey(key),
                    ValidateIssuer = false,
                    ValidateAudience = false
                };
            });
        }

Solution

  • The error is essentially "Cannot convert from SymmetricSecurityKey(string) to IEnumerable<SymmetricSecurityKey>". This means that the IssuerSigningKeys is expecting an IEnumerable (List or Array) of SymmetricSecurityKey instead of a single value.

    The fix is easy, give it an array:

    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>
                    {
                        options.TokenValidationParameters = new TokenValidationParameters
                        {
                            ValidateIssuerSigningKey = true,
                            IssuerSigningKeys = new[] { new SymmetricSecurityKey(key) },
                            ValidateIssuer = false,
                            ValidateAudience = false
                        };
                    });