WebView2 Origin Configuration APIとは?Runtime 148 prereleaseで進むオリジン別セキュリティ設計

WebView2を組み込んだデスクトップアプリで「このドメインだけ厳しくしたい」「社内ポータルだけ例外扱いしたい」と考えていた開発者にとって、Microsoft Edge WebView2 Runtime 148 prereleaseのOrigin Configuration APIは注目すべき変更です。2026年4月18日時点で確認できるMicrosoftのリリースノートでは、WebView2アプリがオリジン単位で機能やセキュリティポリシーを制御できるExperimental APIとして追加されています。(Microsoft Learn)

結論から言うと、このAPIは「WebView2全体に一律の設定をかける」設計から、「読み込むWebコンテンツの出所ごとにポリシーを変える」設計へ進むための土台です。まだprerelease段階のため本番投入前提で固定的に設計するのは早いものの、デスクトップアプリ開発者、セキュリティアーキテクト、エンタープライズ製品チームは今のうちに評価しておく価値があります。

日程Fit。無料・登録不要。「いつ空いてる?」を、ひとつのリンクで。リンクを送って、○△×でかんたん日程調整。無料で日程を作る。
目次

WebView2 Runtime 148 prereleaseで追加されたOrigin Configuration APIとは

Microsoft Edge WebView2 Runtime 148向けのPrerelease SDK 1.0.3965-prereleaseでは、Origin Configuration APIがExperimental APIとして追加されました。対象となるRuntimeは、Microsoft Edge 148.0.3965.0以降に同梱されるWebView2 Runtimeです。(Microsoft Learn)

Origin Configuration APIの役割は、WebView2内で表示するコンテンツのオリジンごとに、機能やセキュリティポリシーを切り替えることです。従来はWebView2プロファイルやコントロール全体に対して一律の設定を行う考え方が中心でした。新APIでは、たとえば以下のような判断がしやすくなります。

これまで起きやすかった設計課題Origin Configuration APIで考えやすくなる設計
WebView2全体に同じセキュリティ設定を適用するしかない信頼済みドメインと外部ドメインで設定を分ける
セキュリティを強めると一部の既存Web機能が壊れる影響範囲をオリジン単位で切り分けて検証する
社内コンテンツ、SaaS、外部ページを同じ扱いにしがちコンテンツの出所ごとにリスク評価を反映する
例外設定がコード上で散らばりやすいポリシー設計として整理しやすくなる

特に重要なのは、今回のAPIが単なる利便性向上ではなく、埋め込みブラウザーのセキュリティポリシー設計に新しい選択肢を与える変更だという点です。

なぜ「オリジン単位」の制御が重要なのか

WebView2は、Windowsデスクトップアプリの中にWebコンテンツを表示できる強力な仕組みです。WPF、WinForms、Win32、.NETアプリなどで、WebベースのUI、認証画面、管理コンソール、外部SaaS連携画面を組み込む用途で使われます。

一方で、WebView2は通常のブラウザーとは違い、ネイティブアプリとの距離が近くなります。Microsoftのセキュリティガイドでも、WebView2でホストするWebコンテンツはネイティブアプリのリソースやAPIへ近づき得るため、適切に分離しないと脆弱性につながると説明されています。(Microsoft Learn)

ここで問題になるのが、WebView2内で表示するコンテンツの信頼度が同じではないことです。

たとえば、同じアプリ内でも次のようにリスクは異なります。

表示するコンテンツ典型的な例リスクの見方
自社管理の固定コンテンツhttps://app.example.com比較的管理しやすいが、サプライチェーンや設定ミスは残る
社内ポータルhttps://portal.corp.example認証・権限管理と連動するため、情報漏えい時の影響が大きい
外部SaaSCRM、ヘルプデスク、BIツール自社でコードを制御できないため、例外設計が必要
ユーザー入力に基づくURLドキュメントビューア、リンクプレビューフィッシングや意図しない遷移への警戒が必要
ローカルまたは開発用コンテンツlocalhost、検証環境本番と開発でポリシー差が生まれやすい

すべてを同じセキュリティ設定で扱うと、厳しすぎて動かない画面が出るか、緩すぎて攻撃面が広がるかのどちらかになりがちです。Origin Configuration APIは、この中間を設計するためのAPIとして見られます。

Origin Configuration APIでできること

リリースノートによると、Origin Configuration APIではCoreWebView2ProfileSetOriginFeaturesメソッドを使い、1つ以上のオリジンまたはオリジンパターンに対して機能設定を適用できます。指定方法は、https://contoso.comのような完全一致の文字列だけでなく、https://[*.]contoso.comのようなワイルドカードパターンにも対応します。 (Microsoft Learn)

2026年4月18日時点で注目される構成要素は次のとおりです。

API・要素役割
CoreWebView2Profile.SetOriginFeatures指定したオリジンパターンに対して機能の有効・無効を設定する
CoreWebView2Profile.GetEffectiveFeaturesForOriginAsync指定したオリジンに最終的に適用される機能設定を非同期で取得する
CoreWebView2OriginFeatureオリジン単位で制御可能な機能を表す列挙型
CoreWebView2OriginFeatureState機能をEnabledまたはDisabledに設定する状態値
EnhancedSecurityMode現時点でオリジン単位制御の対象として示されている機能

SetOriginFeaturesのドキュメントでは、同じ機能と状態の組み合わせで複数回呼び出した場合、以前のオリジン一覧は上書きされ、最新の呼び出しが優先されると説明されています。また、同じ機能設定に対して空のoriginsコレクションを渡すと、設定を既定値へ戻す扱いになります。(Microsoft Learn)

現時点での中心はEnhanced Security Modeのオリジン制御

今回のAPIで最初に見るべき対象は、EnhancedSecurityModeです。MicrosoftのAPIドキュメントでは、CoreWebView2OriginFeatureのフィールドとしてEnhancedSecurityModeが示されており、JITコンパイルや一部のJavaScript APIなど、セキュリティリスクになり得るWebプラットフォーム機能を制限または無効化する追加保護として説明されています。(Microsoft Learn)

実務上は、次のような設計が考えられます。

シナリオ設計例
外部サイトをWebView2で表示する外部オリジンではEnhanced Security Modeを有効化する
自社の業務アプリだけ高度なWeb機能が必要自社オリジンでは通常モード、外部オリジンでは強化モードを検討する
複数のサブドメインを持つSaaSを組み込むhttps://[*.]example.comのようなパターンでまとめて評価する
セキュリティレビューで例外管理が必要オリジン、機能、理由、担当者、検証日を台帳化する

ただし、「Enhanced Security Modeを有効にすれば安全」と単純化するのは危険です。セキュリティ設定は攻撃面を減らすための手段であり、入力検証、ナビゲーション制御、メッセージ検証、ホストオブジェクトの公開範囲管理と組み合わせて初めて効果を発揮します。

実装前に押さえるべきAPIの挙動

Origin Configuration APIを評価するときは、機能名だけでなく、設定の適用ルールを確認しておく必要があります。

より具体的なパターンが優先される

複数の設定が同じオリジンに該当する場合、Microsoftのリリースノートでは、ホスト名、スキーム、ポートの順に評価され、最も具体的なパターンが優先されると説明されています。(Microsoft Learn)

たとえば、次のような設計では注意が必要です。

https://[*.]example.com        → EnhancedSecurityMode: Enabled
https://admin.example.com      → EnhancedSecurityMode: Disabled

この場合、admin.example.comにはより具体的な設定が適用される可能性があります。便利な一方で、例外設定が増えると「どのポリシーが効いているのか」が分かりにくくなります。

そのため、実装時は設定をコードに直接散らすのではなく、次のようなルール表を先に作るべきです。

優先度オリジンパターン設定理由
https://admin.example.comDisabled管理画面の互換性検証用。恒久例外にしない
https://[*.]example.comEnabled自社サブドメイン全体の保護を強化
その他外部オリジンEnabled未分類コンテンツの攻撃面を減らす

例外が必要な場合でも、理由と期限を残しておくと、後からセキュリティレビューや監査で説明しやすくなります。

有効なオリジン形式を使う必要がある

GetEffectiveFeaturesForOriginAsyncは、指定したオリジンに対して最終的に適用される機能設定を返すAPIです。ドキュメントでは、問い合わせるoriginはスキームとホストを含む有効なオリジンである必要があり、無効な場合はE_INVALIDARGで失敗すると説明されています。(Microsoft Learn)

実装時にありがちな失敗は、URLとオリジンを混同することです。

入力例扱い
https://www.example.comオリジンとして扱いやすい
https://www.example.com/path/page.htmlURLであり、オリジン設計では切り分けが必要
www.example.comスキームがないため不適切
javascript:alert(1)オリジンとして扱うべきではない
空文字やnull例外処理が必要

アプリ側では、ユーザー入力や設定ファイルの値をそのままAPIへ渡さず、スキーム、ホスト、ポートを明示的に正規化してから扱う設計が望ましいです。

デスクトップアプリ開発者が評価すべきポイント

WebView2アプリを開発しているチームは、まず「自分たちのアプリがどのオリジンを表示しているか」を棚卸しするところから始めるべきです。Origin Configuration APIはポリシー制御のAPIですが、前提となるオリジン管理が曖昧だと効果を発揮しません。

まず確認するべきチェックリスト

確認項目見るべきポイント
WebView2で表示するURLの一覧固定URLか、ユーザー操作で変わるURLか
自社管理と外部管理の区別自社がコード・設定・配信を制御できるか
認証情報の扱いCookie、トークン、SSO、ローカルストレージの利用状況
ネイティブ連携の有無postMessage、ホストオブジェクト、ExecuteScriptの使用箇所
互換性に敏感な機能JavaScript、WebAssembly、拡張的なWeb APIへの依存
セキュリティ例外の有無一時例外か、恒久的な仕様か

特にExecuteScriptやWebメッセージを使っているアプリでは、オリジン確認が重要です。Microsoftのセキュリティガイドでも、WebView2内のドキュメントのオリジンを常に確認し、ExecuteScriptPostWebMessageAsJsonなどで情報を渡す前に信頼性を評価することが推奨されています。(Microsoft Learn)

セキュリティアーキテクト向けの設計観点

Origin Configuration APIは、開発者だけでなくセキュリティアーキテクトにとっても重要です。理由は、WebView2のセキュリティ設定を「実装詳細」ではなく「ポリシー」として扱いやすくなるからです。

ポリシー設計では「信頼度」ではなく「必要権限」で考える

よくある失敗は、「自社ドメインだから安全」「有名SaaSだから安全」といった信頼度だけで設定を決めることです。実務では、信頼度よりもそのオリジンに何を許可する必要があるのかで判断するほうが安全です。

判断軸良くない判断望ましい判断
自社サイト自社だからすべて許可必要なWeb機能だけ許可
外部SaaS大手サービスだから許可連携に必要な範囲を確認
管理画面管理者しか使わないから緩くする権限が強い画面ほど慎重に扱う
開発環境社内だけだから例外にする本番との差分を明示し、期限を設ける

Origin Configuration APIを使う場合も、まずは次のような分類を作ると実装に落とし込みやすくなります。

分類推奨される考え方
許可済み自社オリジン業務UI、管理コンソール必要機能を確認し、最小権限で設定
制限付き外部オリジンSaaS、外部ヘルプページ既定で強めの制限を検討
一時許可オリジン移行中サービス、検証環境期限、責任者、削除条件を明記
未分類オリジンユーザー入力URL、リダイレクト先原則として厳格に扱う

エンタープライズ製品チームでの活用シーン

グローバル向けのエンタープライズデスクトップアプリでは、顧客ごとにWebView2へ読み込むURLが異なることがあります。地域別のIdP、顧客専用ドメイン、オンプレミス連携、SaaS連携などが混在するため、全顧客に同じ設定を強制すると運用が難しくなります。

Origin Configuration APIが安定すれば、将来的には次のような設計に発展させやすくなります。

活用シーン期待できる効果
顧客テナントごとのドメイン許可企業ごとのセキュリティ要件に合わせやすい
地域別サービスのポリシー分離EU、米国、日本などの運用差分を管理しやすい
外部IdP連携の例外管理認証フローの互換性と安全性を両立しやすい
サポート用診断ツール実際に適用された機能設定を確認しやすい
管理者向けポリシーテンプレート製品設定として説明しやすい

ただし、prerelease段階のAPIを前提に顧客向け管理画面や契約仕様を固めるのは避けるべきです。MicrosoftのAPIドキュメントにも、prerelease製品に関する情報は正式リリース前に大きく変更される可能性があり、Microsoftは提供情報について保証しない旨が記載されています。(Microsoft Learn)

現時点では、製品ロードマップ上の調査項目、検証ブランチ、PoCとして扱うのが現実的です。

実装イメージ: C#でどう考えるか

以下は、設計イメージを示すための疑似的なC#例です。実際のコードでは、利用しているSDKバージョン、APIの最終仕様、例外処理、アプリの初期化順序に合わせて調整してください。

// 例: 特定のオリジンに対してEnhanced Security Modeを有効化する設計イメージ
var origins = new[]
{
    "https://[*.]example.com",
    "https://external-service.example"
};

var features = new[]
{
    new KeyValuePair<CoreWebView2OriginFeature, CoreWebView2OriginFeatureState>(
        CoreWebView2OriginFeature.EnhancedSecurityMode,
        CoreWebView2OriginFeatureState.Enabled
    )
};

webView.CoreWebView2.Profile.SetOriginFeatures(origins, features);

評価時は、設定後にGetEffectiveFeaturesForOriginAsyncで実際に効いている設定を確認する運用を入れると安全です。

var effectiveFeatures =
    await webView.CoreWebView2.Profile.GetEffectiveFeaturesForOriginAsync(
        "https://app.example.com"
    );

foreach (var feature in effectiveFeatures)
{
    Console.WriteLine($"{feature.Key}: {feature.Value}");
}

この確認処理は、開発中のデバッグだけでなく、社内検証ツールや診断ログにも応用できます。特に複数のワイルドカード設定と個別例外が混在する場合、「意図した設定が本当に適用されているか」を可視化する仕組みは重要です。

既存のWebView2セキュリティ対策とどう組み合わせるか

Origin Configuration APIは便利ですが、既存のWebView2セキュリティ対策を置き換えるものではありません。むしろ、既存対策にオリジン単位のポリシー層を追加するものとして捉えるべきです。

Microsoftのセキュリティガイドでは、不要なWebコンテンツ機能を制限する方法として、AreHostObjectsAllowedIsWebMessageEnabledIsScriptEnabledAreDefaultScriptDialogsEnabledなどの設定を必要に応じて無効化することが示されています。(Microsoft Learn)

実務では次のように組み合わせます。

レイヤー対策例目的
ナビゲーション制御許可済みURL以外への遷移をブロック想定外のページ表示を防ぐ
メッセージ検証WebMessageReceivedで送信元と内容を検証悪意ある入力を防ぐ
ホストオブジェクト制御必要な画面だけ公開ネイティブAPIへの攻撃面を減らす
WebView2設定不要なスクリプトやダイアログを制限機能の最小化
Origin Configuration APIオリジンごとに機能ポリシーを切り替え信頼境界に応じた制御
ログ・監査適用ポリシーと遷移履歴を記録障害調査とセキュリティレビュー

セキュリティ設計で重要なのは、1つのAPIに依存しないことです。WebView2はネイティブアプリとWebの境界にあるため、ナビゲーション、メッセージ、ホスト連携、ポリシー、監査をセットで考える必要があります。

Runtime 148 prereleaseで同時に確認したい破壊的変更

WebView2 Runtime 148 prereleaseでは、Origin Configuration API以外にも、ProcessFailedイベントの理由がより細かく返るようになる変更が示されています。これまでUnexpectedにまとめられていた一部の終了シナリオについて、NormalExitAbnormalExitIntegrityFailureなどの値で判別できるようになる内容です。(Microsoft Learn)

この変更はセキュリティ運用にも関係します。たとえば、IntegrityFailureを検知できれば、単なるクラッシュではなくコード整合性に関わる問題としてログやアラートの扱いを変えられます。

変更点開発チームが確認すべきこと
ProcessFailedの理由が細分化既存のUnexpected前提の分岐が壊れないか
148・149では機能フラグが既定無効早めにフラグ有効化でテストする
150以降で既定有効予定監視、ログ、例外処理の見直しが必要

Origin Configuration APIの検証とあわせて、WebView2の異常終了時の復旧処理やログ分類も確認しておくと、セキュリティと運用の両面で準備が進みます。

導入判断: 今すぐ本番採用するべきか

現時点での判断は、本番採用ではなく、設計検証と互換性評価を始める段階です。

理由は明確です。Origin Configuration APIはPrerelease SDKのExperimental APIです。正式リリース前に仕様や挙動が変わる可能性があります。したがって、顧客向けの安定機能としてすぐに前提化するより、次のような進め方が現実的です。

フェーズやること
調査Microsoft LearnのリリースノートとAPIドキュメントを確認
棚卸しWebView2で表示する全オリジンを一覧化
分類自社、外部、顧客管理、開発環境、未分類に分ける
PoC代表的なオリジンにEnhanced Security Modeを適用して検証
互換性確認ログイン、SSO、Webメッセージ、JavaScript依存箇所をテスト
診断整備GetEffectiveFeaturesForOriginAsyncで適用状態を確認
レビューセキュリティチームと例外ルールを整理

特にエンタープライズ製品では、顧客環境ごとにWebView2 Runtimeの更新タイミングが異なることがあります。Runtimeのバージョン、Evergreen Runtimeの配布状況、固定バージョンRuntimeの利用有無も含めて確認しましょう。

よくある失敗と回避策

ワイルドカードを広くしすぎる

https://[*.]example.comのような指定は便利ですが、サブドメインの管理範囲が広い企業では注意が必要です。マーケティングサイト、検証環境、古い管理画面、買収企業のドメインが同じ配下にある場合、想定外のページまで同じポリシーになる可能性があります。

回避策は、最初から広いワイルドカードを使わず、重要なオリジンを個別指定してから範囲を広げることです。

例外設定を恒久化してしまう

互換性問題を避けるために特定オリジンだけ制限を緩めることはあります。しかし、理由や期限を記録しないと、数年後には誰も削除できない「謎の例外」になります。

例外には必ず次の情報を残します。

記録項目
対象オリジンhttps://legacy.example.com
例外内容Enhanced Security Modeを無効化
理由旧UIが特定のJavaScript挙動に依存
期限次回メジャーアップデートまで
担当AppSecチーム、対象機能オーナー
再評価条件SDK安定版昇格時、またはUI刷新時

WebView2のURL遷移を過信する

初期表示URLが安全でも、ユーザー操作、リダイレクト、スクリプトによって別のページへ遷移することがあります。Microsoftのセキュリティガイドでも、WebView2コントロールが別ページへ移動している可能性を踏まえ、ドキュメントのオリジンを確認することが推奨されています。(Microsoft Learn)

Origin Configuration APIを使っても、ナビゲーションイベントでの確認やブロック処理は引き続き必要です。

評価を始めるための実務手順

WebView2 Runtime 148 prereleaseのOrigin Configuration APIを評価するなら、次の順序で進めると失敗しにくくなります。

| 手順 | 作業内容 | 成果物 |
| -: | ——————————- | ———— |
| 1 | WebView2 SDKとRuntimeの対象バージョンを確認 | 検証環境のバージョン一覧 |
| 2 | アプリが表示するURLを収集 | オリジン一覧 |
| 3 | オリジンを信頼境界ごとに分類 | ポリシー分類表 |
| 4 | Enhanced Security Modeの適用候補を決める | 適用候補リスト |
| 5 | 代表画面でPoCを実装 | 検証ブランチ |
| 6 | ログイン、SSO、Webメッセージ、ホスト連携をテスト | 互換性レポート |
| 7 | 実効設定を取得してログ化 | 診断ログ |
| 8 | 例外ルールをレビュー | セキュリティレビュー記録 |

この手順で進めると、単に「新APIを試した」だけでなく、将来の正式採用に向けた判断材料を残せます。

WebView2のセキュリティ設計は「一律」から「文脈別」へ進む

Microsoft Edge WebView2 Runtime 148 prereleaseで追加されたOrigin Configuration APIは、WebView2のセキュリティ設計を一段細かくするための重要な動きです。オリジンごとにEnhanced Security Modeなどの機能を制御できるようになることで、埋め込みブラウザーのポリシー設計は「全体設定」から「コンテンツの出所に応じた制御」へ進みやすくなります。

ただし、現時点ではprereleaseのExperimental APIです。本番機能として急いで組み込むより、まずはWebView2で表示しているオリジンを棚卸しし、信頼境界、例外ルール、互換性リスクを整理することが先です。

次に取るべき行動はシンプルです。自社アプリのWebView2利用箇所を洗い出し、どのオリジンにどのセキュリティポリシーを適用したいのかを表にしてください。そのうえで、Runtime 148 prerelease環境でOrigin Configuration APIを小さく検証すれば、正式化されたときに慌てず設計へ取り込めます。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次