如何讓原生用戶端應用程式與 Proxy 應用程式互動
Microsoft Entra 應用程式 Proxy 可用來發佈 Web 應用程式。 您也可以將其用來發佈使用 Microsoft 驗證連結庫 (MSAL) 設定的原生用戶端應用程式。 用戶端應用程式與 Web 應用程式不同,因為這種應用程式會安裝在裝置上,而 Web 應用程式則是透過瀏覽器存取。
為了支援原生用戶端應用程式,應用程式 Proxy 會接受在標頭中傳送的 Microsoft Entra ID 發行權杖。 應用程式 Proxy 服務會對使用者進行驗證。 此解決方案不使用應用程式權杖進行驗證。
若要發佈原生應用程式,請使用 Microsoft 驗證程式庫,該程式庫會處理驗證並支援許多用戶端環境。 應用程式 Proxy 適合代表登入使用者呼叫 Web API 的傳統型應用程式案例。
本文引導您完成使用應用程式 Proxy 和 Microsoft 驗證程式庫 (MSAL) 發佈原生應用程式的四個步驟。
步驟 1:發佈您的 Proxy 應用程式
如同任何其他應用程式一般,發佈您的 Proxy 應用程式,並指派使用者以存取您的應用程式。 如需詳細資訊,請參閱使用應用程式 Proxy 發佈應用程式。
步驟 2:註冊您的原生應用程式
您現在必須在 Microsoft Entra ID 中註冊應用程式。
以至少應用程式系統管理員的身分登入 Microsoft Entra 系統管理中心。
在右上角選取您的使用者名稱。 請確認您已登入使用應用程式 Proxy 的目錄。 如果您需要變更目錄,請選取 [切換目錄],然後選擇會使用應用程式 Proxy 的目錄。
瀏覽至 [身分識別]>[應用程式]>[應用程式註冊]。 所有應用程式註冊的清單隨即顯示。
選取新增註冊。 [註冊應用程式] 頁面隨即顯示。
在 [名稱] 標題中,為您的應用程式指定使用者面向的顯示名稱。
在 [支援的帳戶類型] 標題下,使用下列指導方針選取存取層級。
- 若只要將組織內部的帳戶設為目標,請選取 [僅此組織目錄中的帳戶]。
- 若只要將商業或教育客戶設為目標,請選取 [任何組織目錄中的帳戶]。
- 若要將最廣泛的一組 Microsoft 身分識別設為目標,請選取 [任何組織目錄中的帳戶及個人的 Microsoft 帳戶]。
在 [重新導向 URI] 底下,選取 [公用用戶端 (行動和桌面)],然後為您的應用程式輸入重新導向 URI
https://login.microsoftonline.com/common/oauth2/nativeclient
。選取並閱讀 [Microsoft 平台原則],然後選取 [註冊]。 隨即會建立並顯示新應用程式註冊的概觀頁面。
如需建立新應用程式註冊的詳細資訊,請參閱整合應用程式與 Microsoft Entra ID。
步驟 3:授與 Proxy 應用程式的存取權
您的原生應用程式已註冊。 為其授與 Proxy 應用程式的存取權:
- 在新應用程式註冊頁面的側邊欄中,選取 [API 權限]。 新應用程式註冊的 [API 權限] 頁面隨即顯示。
- 選取新增權限。 [要求 API 權限] 頁面隨即顯示。
- 在 [選取 API] 設定底下,選取 [我的組織使用的 API]。 清單隨即顯示,其中包含您目錄中公開 API 的應用程式。
- 在搜尋方塊中輸入或捲動,以尋找您在步驟 1:發佈 Proxy 應用程式中發佈的 Proxy 應用程式,然後選取 Proxy 應用程式。
- 在 [您的應用程式需要什麼類型的權限?] 標題中,選取權限類型。 如果您的原生應用程式需要以登入使用者的身分存取 Proxy 應用程式 API,請選擇 [委派的權限]。
- 在 [選取權限] 標題中,選取所需的權限,然後選取 [新增權限]。 您的原生應用程式的 [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 系統管理中心找到 |
---|---|
<租用戶識別碼> | [身分識別]>[概觀]>[屬性] |
<原生應用程式的應用程式識別碼> | 應用程式註冊 > 您的原生應用程式 > 概觀 > 應用程式識別碼 |
<Scope> | [應用程式註冊] > [您的原生應用程式] > [API 權限] > 選取 [權限 API] (user_impersonation) > 具有標題 user_impersonation 的面板隨即顯示在右側。 > 範圍是編輯方塊中的 URL。 |
<Proxy 應用程式 URL> | API 的外部 URL 和路徑 |
使用這些參數編輯 MSAL 程式碼之後,您的使用者即可驗證原生用戶端應用程式,即使他們位於公司網路外部也可以。
下一步
如需原生應用程式流程的詳細資訊,請參閱 Microsoft Entra ID 中的行動和桌面應用程式。
深入了解設定 Microsoft Entra ID 中應用程式的單一登入。