【问题标题】:InvalidOperationException: Scheme already exists: Bearer (JWT Authentication configuration .Net Core 2.2)InvalidOperationException:Scheme 已存在:Bearer(JWT 身份验证配置.Net Core 2.2)
【发布时间】:2020-07-23 02:01:52
【问题描述】:

我正在尝试在我的 Web API 项目(在 .Net Core 2.2 中开发)中实现 JWT 身份验证,但由于启动类中的配置而出现错误。当我在没有此代码的情况下运行我的应用程序时,它可以完美运行而没有任何错误。这是配置代码。

services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(options =>
            {
                options.SaveToken = true;
                options.RequireHttpsMetadata = false;
                options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
                {
                    ValidAudience = Configuration.GetSection("Jwt").GetSection("Issuer").Value,
                    ValidIssuer = Configuration.GetSection("Jwt").GetSection("Issuer").Value,
                    ValidateIssuer = false,
                    ValidateAudience = false,
                    ValidateLifetime = true,
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration.GetSection("Jwt").GetSection("Key").Value))

                };
            });

这是错误

请问有什么解决办法吗?

【问题讨论】:

  • 删除AddAuthentication中的选项并将其留空services.AddAuthentication()

标签: .net-core jwt asp.net-core-webapi jwt-auth


【解决方案1】:

您可以按以下方式进行修改。

   services.AddAuthentication("Bearer")
            .AddJwtBearer("Bearer", options =>
            {
                options.SaveToken = true;
                options.RequireHttpsMetadata = false;
                options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
                {
                    ValidAudience = Configuration.GetSection("Jwt").GetSection("Issuer").Value,
                    ValidIssuer = Configuration.GetSection("Jwt").GetSection("Issuer").Value,
                    ValidateIssuer = false,
                    ValidateAudience = false,
                    ValidateLifetime = true,
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration.GetSection("Jwt").GetSection("Key").Value))

                };
            });

【讨论】:

    猜你喜欢
    • 2019-09-06
    • 2021-04-15
    • 2019-12-24
    • 1970-01-01
    • 2019-10-30
    • 2019-09-01
    • 2017-09-11
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多