リモート アプリのセットアップ

一部のインクリメンタルなアップグレードのシナリオでは、新しい ASP.NET Core アプリが元の ASP.NET アプリと通信できると便利です。

具体的には、この機能は現在、リモート アプリ認証リモート セッション機能に使用されています。

構成

ASP.NET Core アプリが ASP.NET アプリと通信できるようにするには、各アプリにいくつかの小さな変更を行う必要があります。

ASP.NET アプリの構成

ASP.NET アプリが ASP.NET Core アプリから要求を受信できるように設定するには:

  1. NuGet パッケージ Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices をインストールします
  2. 次のように ISystemWebAdapterBuilderAddRemoteAppServer 拡張メソッドを呼び出します。
SystemWebAdapterConfiguration.AddSystemWebAdapters(this)
    .AddRemoteAppServer(options =>
    {
        // ApiKey is a string representing a GUID
        options.ApiKey = ConfigurationManager.AppSettings["RemoteAppApiKey"];
    });

AddRemoteAppServer の呼び出しに渡されるオプション構成メソッドでは、API キーを指定する必要があります。 API キーは次のとおりです。

  • 信頼された呼び出し元のみがエンドポイントへの要求を行えるようにエンドポイントをセキュリティで保護するために使用されます。
  • ASP.NET Core アプリの構成時に Core アプリに対して指定されたのと同じ API キー。
  • 文字列であり、GUID として解析可能である必要があります。 キー内のハイフンは省略可能です。
  1. 省略可能: SystemWebAdapterModule モジュールを web.config に追加します (NuGet によってまだ追加されていない場合)。 ASP.NET Core に対して SDK スタイル プロジェクトを使用している場合、SystemWebAdapterModule モジュールは自動的に追加されません。
  <system.webServer>
    <modules>
+      <remove name="SystemWebAdapterModule" />
+      <add name="SystemWebAdapterModule" type="Microsoft.AspNetCore.SystemWebAdapters.SystemWebAdapterModule, Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices" preCondition="managedHandler" />
    </modules>
</system.webServer>

ASP.NET Core アプリ

ASP.NET Core アプリが ASP.NET アプリに要求を送信できるように設定するには、同様の変更を行って、AddSystemWebAdapters を使用して System.Web アダプター サービスを登録した後に AddRemoteApp を呼び出す必要があります。

builder.Services.AddSystemWebAdapters()
    .AddRemoteAppClient(options =>
    {
        options.RemoteAppUrl = new(builder.Configuration["ReverseProxy:Clusters:fallbackCluster:Destinations:fallbackApp:Address"]);
        options.ApiKey = builder.Configuration["RemoteAppApiKey"];
    });

上のコードでは以下の操作が行われます。

  • AddRemoteApp の呼び出しは、リモート アプリの URL と共有シークレット API キーを構成するために使用されます。
  • RemoteAppUrl プロパティは、ASP.NET Core アプリが通信する ASP.NET Framework アプリの URL を指定します。 この例では、インクリメンタルな移行の "ストラングラー Fig パターン" の一部として、ASP.NET Framework アプリに要求をプロキシする YARP プロキシによって使用される既存の構成設定から URL が読み取られます。

ASP.NET と ASP.NET Core アプリの両方が更新されたので、拡張メソッドが、リモート アプリ認証またはリモート セッションを設定するために必要に応じて使用できるようになりました。

リモート アプリ接続のセキュリティ保護

リモート アプリの機能には、新しいエンドポイントでの ASP.NET アプリからの要求の処理が含まれるため、ASP.NET アプリとの間の通信はセキュリティで保護されていることが重要です。

最初に、ASP.NET アプリで ASP.NET Core アプリを認証するために使用される API キー文字列が一意であり、秘密性が保たれていることを確認します。 API キーをソース管理に保存しないことが最善のプラクティスです。 代わりに、実行時に Azure Key Vault やその他のセキュリティで保護されたランタイム構成などの安全なソースからこれを読み込みます。 セキュリティで保護された API キーを推奨するために、リモート アプリ接続は、キーが空でない GUID (128 ビットの 16 進数) であることを要求します。

2 つ目に、ASP.NET Core アプリが正しい ASP.NET アプリから情報を要求していることを信頼できることが重要であるため、ASP.NET アプリは、ASP.NET Core アプリが信頼できるソースによって応答が提供されていることを認識できるように、すべての運用シナリオで HTTPS を使用する必要があります。