Share via


遠端應用程式設定

在某些累加升級案例中,新的 ASP.NET Core 應用程式若能與原始 ASP.NET 應用程式通訊將會很實用。

具體而言,此功能目前用於遠端應用程式驗證遠端工作階段功能。

組態

若要讓 ASP.NET Core 應用程式能夠與 ASP.NET 應用程式通訊,您必須對每個應用程式進行幾項小變更。

ASP.NET 應用程式設定

若要設定 ASP.NET 應用程式以接收 ASP.NET Core 應用程式的要求:

  1. 安裝 NuGet 套件 Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices
  2. ISystemWebAdapterBuilder 上呼叫 AddRemoteAppServer 擴充方法:
SystemWebAdapterConfiguration.AddSystemWebAdapters(this)
    .AddRemoteAppServer(options =>
    {
        // ApiKey is a string representing a GUID
        options.ApiKey = ConfigurationManager.AppSettings["RemoteAppApiKey"];
    });

在傳遞至 AddRemoteAppServer 呼叫的選項群組設定方法中必須指定 API 金鑰。 API 金鑰將會:

  • 用來確保端點的安全性,只有受信任的呼叫端可向端點提出要求。
  • 設定時提供給 ASP.NET Core 應用程式的相同 API 金鑰。
  • 字串且必須剖析為 GUID。 金鑰中的連字號為選用項目。
  1. 選擇性: 如果模組尚未由 NuGet 新增,請將 SystemWebAdapterModule 模組新增至 web.config 。 使用適用於 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。 在此範例中,系統會從 YARP Proxy 使用的現有組態設定讀取 URL,該設定會做為累加移轉 Strangler Fig 模式的一部分,將要求 proxy 傳送至 ASP.NET Framework 應用程式。

更新 ASP.NET 和 ASP.NET Core 應用程式之後,擴充方法現在可以視需要用來設定遠端應用程式驗證遠端工作階段

保護遠端應用程式連線

由於遠端應用程式功能牽涉到從 ASP.NET 應用程式在新端點上提供要求,因此與 ASP.NET 應用程式之間的通訊很重要。

首先,請確定用來向 ASP.NET 應用程式驗證 ASP.NET Core 應用程式的 API 金鑰字串是唯一項目,並將其保密。 最佳做法是不要將 API 金鑰儲存在原始檔控制中。 作為替代,請在執行階段從 Azure Key Vault 或其他安全執行階段組態的來源載入金鑰。 為鼓勵使用安全的 API 金鑰,遠端應用程式連線要求金鑰為非空白 GUID (128 位十六進位數字)。

其次,為確保 ASP.NET Core 應用程式能夠保證自己向正確的 ASP.NET 應用程式要求資訊,ASP.NET 應用程式應該在任何實際執行案例中使用 HTTPS,讓 ASP.NET Core 應用程式知道回應是由受信任的來源提供。