.NET 9 预览版 2 中的 ASP.NET Core 更新:Blazor、OIDC、OAuth 和配置 HTTP.sys

.NET 9 Preview 2 更新总结

Microsoft 发布了 .NET 9 Preview 2,其中包含了 ASP.NET Core 的多个重要更新,主要集中在 Blazor 组件、WebSocket 压缩、身份验证集成等方面。以下是主要更新内容的总结:

Blazor 组件构造函数注入

Blazor 组件现在支持通过构造函数注入已配置的服务。这一功能补充了现有的通过 @inject[Inject] 属性注入服务的方式。开发者可以通过简单的 C# 构造函数访问服务,例如 NavigationManager 服务。

WebSocket 压缩

Blazor 的交互式服务器渲染默认启用了 WebSocket 协议压缩,显著减少了消息负载的大小。为了防止压缩攻击,交互式服务器渲染默认采用了内容安全策略 (CSP) ancestor frame: 'self',限制应用只能嵌入到同源的页面中。

开发者可以通过以下方式调整 frame-ancestors 源或禁用压缩:

  • 调整 frame-ancestors 源:

    app.MapRazorComponents<App>()
        .AddInteractiveServerRenderMode(o => o.ContentSecurityFrameAncestorsPolicy="'none'");
  • 禁用压缩:

    app.MapRazorComponents<App>()
        .AddInteractiveServerRenderMode(o => o.DisableWebSocketCompression = true);

OAuth 和 OIDC 认证参数定制

OAuth 和 OIDC 认证流程新增了 AdditionalAuthorizationParameters 选项,允许开发者自定义授权消息参数。例如:

builder.Services.AddAuthentication().AddOpenIdConnect(options =>
{
    options.AdditionalAuthorizationParameters.Add("prompt", "login");
    options.AdditionalAuthorizationParameters.Add("audience", "https://api.example.com");
});

HTTP.sys 扩展认证标志配置

开发者可以通过新的 EnableKerberosCredentialCachingCaptureCredentials 属性配置 HTTP_AUTH_EX_FLAG_ENABLE_KERBEROS_CREDENTIAL_CACHINGHTTP_AUTH_EX_FLAG_CAPTURE_CREDENTIAL 标志,优化 Windows 身份验证的处理方式。

System.Text.Json 新配置

新增了 AllowOutOfOrderMetadataProperties 配置,支持在 JsonSerializer 中读取乱序的元数据,并确保在读取过程中 JSON 属性名称始终不被转义。

未来规划

ASP.NET Core 在 .NET 9 中的路线图可在 GitHub 仓库 中查看。

以上更新为开发者提供了更多灵活性和优化选项,进一步提升了 ASP.NET Core 的功能和性能。

阅读 23
0 条评论