C# ASP.NET Core 3中的多种身份验证类型

C# ASP.NET Core 3中的多种身份验证类型,c#,asp.net-identity,asp.net-core-3.0,C#,Asp.net Identity,Asp.net Core 3.0,对于网络用户,我正在进行基于Cookie的身份验证,对于物联网设备,我正在进行JWT身份验证。但我也有几个API,Web和IOT用户都使用 如果存在Cookie,我希望它使用Cookie/Identity Auth,如果存在bearer,则使用JWT Auth。实际上,它可能必须同时尝试这两种方法 我可以让它们单独工作,即cookieauth或jwtauth,但不能同时工作 下面是我从.NETCore2.2应用程序中获得的代码片段,它的工作方式正是我所需要的 services.AddAuthen

对于网络用户,我正在进行基于Cookie的身份验证,对于物联网设备,我正在进行JWT身份验证。但我也有几个API,Web和IOT用户都使用

如果存在Cookie,我希望它使用Cookie/Identity Auth,如果存在bearer,则使用JWT Auth。实际上,它可能必须同时尝试这两种方法

我可以让它们单独工作,即cookieauth或jwtauth,但不能同时工作

下面是我从.NETCore2.2应用程序中获得的代码片段,它的工作方式正是我所需要的

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)  
                .AddCookie() 
                .AddJwtBearer(cfg =>
                {
                    cfg.RequireHttpsMetadata = false;
                    cfg.SaveToken = true;
                    cfg.TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidIssuer = Configuration["JwtIssuer"],
                        ValidAudience = Configuration["JwtIssuer"],
                        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JwtKey"])),
                    };
                });
我在.NETCore2.2中也有这个

    services.AddMvc(config =>
                {
                        var defaultPolicy = new AuthorizationPolicyBuilder(new[] { JwtBearerDefaults.AuthenticationScheme, IdentityConstants.ApplicationScheme, CookieAuthenticationDefaults.AuthenticationScheme })
                                        .RequireAuthenticatedUser()
                                        .Build();
                        config.Filters.Add(new AuthorizeFilter(defaultPolicy));
                 });
有人能帮助我们了解.Net Core 3中发生了什么变化,以及我如何解决这个问题吗