默认身份验证方案
从 .NET 7 开始,我们在 ASP.NET Core 中的身份验证领域内引入了新行为。
以前,用户需要在 AddAuthentication
调用中设置默认身份验证方案,该方案由身份验证和授权处理程序使用:
builder.Services.AddAuthentication("MyDefaultScheme");
后来,在注册单个身份验证方案后,该方案就将被视为默认方案。 例如,“MyDefaultScheme”将在以下代码中被视为默认方案。
builder.Services.AddAuthentication().AddOAuth("MyDefaultScheme");
此更改可能会公开应用程序中的意外行为变更,例如验证身份验证选项的时间比预期的要早。
引入的版本
ASP.NET Core 7.0
旧行为
以前,如果用户未在 AddAuthentication
调用中提供默认方案,将不会设置默认方案。
builder.Services.AddAuthentication().AddCookie();
这影响了应用程序层中身份验证处理程序的行为。
新行为
从 ASP.NET Core 7.0 开始,当(且仅当)在应用程序中注册了单个方案时,该方案将被视为默认方案。 在以下代码中,CookieDefaults.AuthenticationScheme
被视为默认方案。
builder.Services.AddAuthentication().AddCookie();
但是,在下一个代码片段中,不会设置默认值,因为注册了多个方案。
builder.Services.AddAuthentication().AddCookie().AddJwtBearer();
中断性变更的类型
此更改会影响二进制兼容性。
更改原因
进行此更改是为了在配置身份验证时减少样本,以及设置合理的默认值。
建议的操作
此更改仅影响注册了单个方案的应用程序。 对于这些方案,建议确保应用程序已准备好处理单个方案为默认值的假设。 例如,确保正确配置了与该方案关联的选项。
或者,可以通过设置 Microsoft.AspNetCore.Authentication.SuppressAutoDefaultScheme
应用上下文标志来禁用新行为。
受影响的 API
身份验证 API。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈