ASP.NET Core 2.0 - AddAuthentication 和 DefaultScheme

Amb*_*buj 5 c# asp.net asp.net-core-mvc asp.net-core asp.net-core-2.0

我正在尝试将 ASP.NET Core 1.1 应用程序升级到 2.0。该应用程序需要两种身份验证,一种是基本身份验证,另一种是 JWT。我的代码看起来像这样:

services.AddAuthentication(options =>
                    {
                        options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
                    })
                .AddBasic(BasicScheme, _ => { })
                .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
                {...}
Run Code Online (Sandbox Code Playgroud)

我的问题是我似乎无法让他们同时工作!无论我设置为 DefaultScheme 的哪一个都是唯一有效的,另一个会中断并返回 HTTP 401。

有什么想法如何让它们都能工作吗?

Amb*_*buj 4

只是设法让它工作...此链接有帮助:https://wildermuth.com/2017/08/19/Two-AuthorizationSchemes-in-ASP-NET-Core-2

重要的一点在这里:

当我们使用Authorize属性时,它实际上默认绑定到第一个身份验证系统。诀窍是更改属性以指定要使用的身份验证: