Microsoftがリリースした.NET 9 Preview 2には、ASP.NET Coreに関するいくつかの更新が含まれている。Blazorコンポーネントコンストラクタインジェクション、BlazorインタラクティブサーバーコンポーネントのWebSocket圧縮などだ。さらに、開発者はOIDCとOAuthパラメータをカスタマイズし、HTTP.sys拡張認証フラグを設定することで、認証統合を効率化できる。
Blazor コンポーネントは、@inject
や[Inject]
属性を使用したサービスプロパティの挿入という既存の機能を補完し、設定されたサービスのコンストラクタ挿入をサポートするようになった。マイクロソフトはこの機能を以下の例で紹介している。この例では、あるコンポーネントが基本 C# コンストラクタを介してコンストラクタ挿入を使用し、NavigationManager
サービスにアクセスしている。
Blazorコンポーネントのコンストラクタ挿入(出典:Microsoftブログ)
Blazorのインタラクティブサーバーレンダリングは、デフォルトでWebSocketプロトコル圧縮を取り入れ、メッセージのペイロードサイズを大幅に削減した。さらに、安全な接続における圧縮攻撃の潜在的なリスクを軽減するため、インタラクティブサーバーレンダリングはデフォルトのコンテンツセキュリティポリシー(CSP)ancestor frame:'self'
を採用し、アプリケーションの埋め込みを同じソースから発信されたページのみに制限している。
frame-ancestors
ソースを変更するには、ContentSecurityFrameAncestorsPolicy
オプションを使う必要がある。
app.MapRazorComponents<App>() .AddInteractiveServerRenderMode(o => o.ContentSecurityFrameAncestorsPolicy="'none'");
圧縮を無効にするには、DisableWebSocketCompression
オプションがある。
app.MapRazorComponents<App>() .AddInteractiveServerRenderMode(o => o.DisableWebSocketCompression = true);
さらに、OAuthとOIDC認証手続きには、新しいAdditionalAuthorizationParametersオプションがあり、リダイレクトリクエスト文字列によく含まれる認証メッセージパラメータのカスタマイズを容易にする。これは次のようにして実行できる。
builder.Services.AddAuthentication().AddOpenIdConnect(options =>){ options.AdditionalAuthorizationParameters.Add("prompt", "login"); options.AdditionalAuthorizationParameters.Add("audience", "https://api.example.com");});
次の機能は、HTTP.sys拡張認証フラグの設定である。開発者は、HTTP.sys AuthenticationManagerの新しいEnableKerberosCredentialCachingプロパティとCaptureCredentials
プロパティを使用して、HTTP_AUTH_EX_FLAG_ENABLE_KERBEROS_CREDENTIAL_CACHING
とHTTP_AUTH_EX_FLAG_CAPTURE_CREDENTIAL
HTTP.sysフラグを設定し、Windows認証の処理方法を最適化できる。
最新リリースでは、System.Text.Jsonの新しいAllowOutOrderMetadataProperties
設定も登場した。コメント欄で、.NETソフトウェア開発エンジニアのWeihan Li氏は、JsonSerializerで順不同のメタデータ読み込みのサポートを導入し、読み込み時にJSONプロパティ名が常にエスケープされないようにする変更を指摘した。
.NET 9のASP.NET Coreのロードマップは、Githubリポジトリで入手できる。