如何讓原生用戶端應用程式與 Proxy 應用程式互動

Microsoft Entra 應用程式 Proxy 可用來發佈 Web 應用程式。 您也可以使用它來發佈使用 Microsoft 驗證連結庫 (MSAL) 設定的原生用戶端應用程式。 用戶端應用程式與 Web 應用程式不同,因為它們安裝在裝置上,而 Web 應用程式則是透過瀏覽器存取。

為了支援原生用戶端應用程式,應用程式 Proxy 會接受標頭中傳送的 Microsoft Entra ID 發行令牌。 應用程式 Proxy 服務會為使用者執行驗證。 此解決方案不會使用應用程式令牌進行驗證。

使用者、Microsoft Entra ID 和已發佈應用程式之間的關聯性

若要發佈原生應用程式,請使用 Microsoft 驗證連結庫,負責驗證並支援許多客戶端環境。 應用程式 Proxy 適用於 代表登入使用者 案例呼叫 Web API 的桌面應用程式。

本文將逐步引導您完成四個步驟,以應用程式 Proxy 和 Microsoft 驗證連結庫 (MSAL) 發佈原生應用程式。

步驟 1:發佈 Proxy 應用程式

將 Proxy 應用程式發佈為任何其他應用程式,並指派使用者存取您的應用程式。 如需詳細資訊,請參閱 使用應用程式 Proxy 發佈應用程式。

步驟 2:註冊原生應用程式

您現在必須在 Microsoft Entra ID 中註冊您的應用程式。

  1. 以至少應用程式 管理員 istrator 身分登入 Microsoft Entra 系統管理中心

  2. 選取右上角的用戶名稱。 確認您已登入使用應用程式 Proxy 的目錄。 如果您需要變更目錄,請選取 [切換目錄 ],然後選擇使用應用程式 Proxy 的目錄。

  3. 流覽至 [身分>識別應用程式> 應用程式註冊]。 所有應用程式註冊的清單隨即出現。

  4. 選取新增註冊[註冊應用程式] 頁面隨即顯示。

    在 Microsoft Entra 系統管理中心建立新的應用程式註冊

  5. 在 [ 名稱] 標題中,指定應用程式的使用者面向顯示名稱。

  6. 在 [ 支持的帳戶類型] 標題下,使用這些指導方針選取存取層級。

    • 若要僅以組織內部的帳戶為目標,請只選取此組織目錄中的 [帳戶]。
    • 若要僅以企業或教育客戶為目標,請選取 任何組織目錄中的 [帳戶]。
    • 若要以最廣泛的 Microsoft 身分識別集為目標,請選取 任何組織目錄中的帳戶和個人 Microsoft 帳戶
  7. 在 [重新導向 URI] 下,選取 [公用用戶端] [行動裝置和桌面],然後輸入應用程式的重新導向 URIhttps://login.microsoftonline.com/common/oauth2/nativeclient

  8. 選取並讀取 Microsoft 平台原則,然後選取 [ 註冊]。 隨即會建立並顯示新應用程式註冊的概觀頁面。

如需建立新應用程式註冊的詳細資訊,請參閱 整合應用程式與 Microsoft Entra ID

步驟 3:授與 Proxy 應用程式的存取權

您的原生應用程式已註冊。 授與 Proxy 應用程式的存取權:

  1. 在新應用程式註冊頁面的提要字段中,選取 [API 許可權]。 新應用程式註冊的 API 許可權頁面隨即出現。
  2. 選取新增權限。 [ 要求 API 許可權] 頁面隨即出現。
  3. 在 [ 選取 API ] 設定下,選取 [我的組織所使用的 API]。 隨即出現清單,其中包含公開 API 之目錄中的應用程式。
  4. 在搜尋方塊中輸入或捲動,以尋找您在步驟 1:發佈 Proxy 應用程式中發佈的 Proxy 應用程式,然後選取 Proxy 應用程式。
  5. 您的應用程式需要何種許可權類型? 標題中,選取許可權類型。 如果您的原生應用程式需要以登入使用者身分存取 Proxy 應用程式 API,請選擇 [委派的許可權]。
  6. 在 [ 選取許可權] 標題中,選取所需的許可權,然後選取 [ 新增許可權]。 原生應用程式的 [API 許可權] 頁面現在會顯示您新增的 Proxy 應用程式和許可權 API。

步驟 4:將 Microsoft 驗證連結庫新增至您的程式代碼 (.NET C# 範例)

在 Microsoft 驗證連結庫 (MSAL) 的驗證內容中編輯原生應用程式程式代碼,以包含下列文字:

// Acquire access token from Microsoft Entra ID for proxy application
IPublicClientApplication clientApp = PublicClientApplicationBuilder
.Create(<App ID of the Native app>)
.WithDefaultRedirectUri() // will automatically use the default Uri for native app
.WithAuthority("https://login.microsoftonline.com/{<Tenant ID>}")
.Build();

AuthenticationResult authResult = null;
var accounts = await clientApp.GetAccountsAsync();
IAccount account = accounts.FirstOrDefault();

IEnumerable<string> scopes = new string[] {"<Scope>"};

try
 {
    authResult = await clientApp.AcquireTokenSilent(scopes, account).ExecuteAsync();
 }
    catch (MsalUiRequiredException ex)
 {
     authResult = await clientApp.AcquireTokenInteractive(scopes).ExecuteAsync();                
 }

if (authResult != null)
 {
  //Use the Access Token to access the Proxy Application

  HttpClient httpClient = new HttpClient();
  httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
  HttpResponseMessage response = await httpClient.GetAsync("<Proxy App Url>");
 }

您可以在 Microsoft Entra 系統管理中心找到範例程式代碼中的必要資訊,如下所示:

所需的資訊 如何在 Microsoft Entra 系統管理中心尋找
<租用戶識別碼> 身分識別概觀>>屬性
<原生應用程式的應用程式識別碼> 應用程式註冊>您的原生應用程式>概觀>應用程式標識碼
<範圍> 應用程式註冊>您的原生應用程式>API許可權>在許可權 API (user_impersonation) > 上選取具有 標題 user_impersonation的面板會出現在右側。 > 範圍是編輯框中的URL。
<Proxy 應用程式 URL> API 的外部 URL 和路徑

使用這些參數編輯 MSAL 程式代碼之後,即使用戶位於公司網路之外,也能向原生用戶端應用程式進行驗證。

下一步

如需原生應用程式流程的詳細資訊,請參閱 Microsoft Entra ID 中的行動 裝置和 傳統型 應用程式。

瞭解如何在 Microsoft Entra ID 中設定應用程式單一登錄。