Microsoft Entra 應用程式開發

已完成

現在您對 Microsoft Entra ID 的基本原則和優點有了進一步的了解,您必須決定如何使用其功能,以為應用程式實作驗證和授權。 您發現為了協助保護客戶的資料,您必須確保實作會與 PostgreSQL 存取控制機制整合。 您決定從識別開發、佈建和管理 Microsoft Entra 應用程式時所牽涉到的工作開始。 您也想要決定如何滿足將應用程式存取權提供給多個客戶的需求。

若要實作以 Microsoft Entra ID 為基礎的應用程式,您必須執行數個與應用程式相關的管理工作,包括註冊、設定其權限及管理其祕密。

什麼是應用程式註冊?

在 Microsoft Entra 環境中作業時,使用者會分兩個階段向應用程式進行驗證:

  1. 首先,Microsoft Entra 識別碼會驗證使用者的身分識別。 成功驗證之後,Microsoft Entra ID 會發行權杖,其中包含反映成功驗證的資訊。
  2. 使用者會將那些權杖傳遞給應用程式。 應用程式必須驗證使用者的安全性權杖,以確定驗證成功。

若要執行這類驗證,應用程式必須能夠與 Microsoft Entra ID 安全地通訊。 接著,其會要求應用程式本身以 Microsoft Entra 安全性主體的形式運作。 為了實現這項操作,您必須確定應用程式是以包含驗證使用者帳戶相同 Microsoft Entra 租用戶中的某個形式呈現。

Microsoft Entra 的應用程式有兩種表示法:

  • 定義應用程式屬性的應用程式物件。
  • 提供驗證和授權功能,並參考應用程式物件的服務主體。

您可以直接在 Azure 入口網站的 [應用程式註冊] 刀鋒視窗中建立應用程式物件。 針對您自己的自訂應用程式,這類註冊會自動建立對應的服務主體。 之後,您可以在 Azure 入口網站中,從 [企業應用程式] 刀鋒視窗管理服務主體。

在應用程式註冊期間,您可以選擇指定應用程式的重新導向統一資源識別項 (URI)。 其值會指定授權伺服器在成功授權應用程式之後,要將使用者重新導向的位置。 授權伺服器會將代碼或權杖傳送至重新導向 URI,因此請務必在應用程式註冊流程期間,註冊正確的位置。

注意

重新導向 URI 必須以 https 開頭,除非其參考 localhost,在這種情況下,您可以使用 http://localhost 。 其區別大小寫。

什麼是應用程式權限?

與 Microsoft Entra ID 整合的應用程式會遵循授權模型,讓您以更細微方式控制其對其他 Microsoft Entra ID 整合應用程式和資源的權限。 Microsoft Entra ID 依賴 OAuth 2.0 授權模型來實作這些權限。 在 OAuth 2.0 中,權限會組織成集合,通常稱為「範圍」

作為開發人員,您可以在設定中指定權限字串,以要求應用程式所需的權限。 例如,將權限字串設為 "https://graph.microsoft.com/Calendars.Read"";表示應用程式必須能夠在 Microsoft Graph 中讀取使用者的行事曆。 應用程式必須透過同意獲得授與這些權限,這必須由 Microsoft Entra 使用者或 Microsoft Entra 系統管理員授與,取決於權限的範圍。

Microsoft Entra ID 支援兩種類型的權限:

  • 委派權限會由具備登入使用者的互動應用程式使用。 因此,應用程式會在存取目標資源時代表已登入的使用者採取動作。
  • 應用程式權限會供沒有依賴登入使用者的應用程式執行時使用,例如背景服務。 這些應用程式需要系統管理員同意。

什麼是應用程式祕密?

有兩種驗證類型可用於服務主體:

  • 以密碼為基礎的驗證,其依賴您可以在 Azure 入口網站中直接產生的應用程式祕密。 產生祕密時,您會指定其存留期。
  • 以憑證為基礎的驗證,其依賴您上傳至 Microsoft Entra ID 的憑證。

注意

若應用程式將由 Azure 計算資源 (例如 Azure 虛擬機器 (VM)、Azure App Service Web 應用程式或 AKS 叢集) 裝載,請考慮針對應用程式識別使用受控識別,而非使用服務主體。 這樣就不需要針對驗證管理密碼或憑證。

應用程式驗證案例有哪些不同類型?

驗證流程和對應的設定詳細資料取決於應用程式類型。 應用程式類型的一般分類包括:

  • 瀏覽器型應用程式。 這些是透過在瀏覽器中執行的 JavaScript 或 TypeScript 應用程式取得權杖的 Web 應用程式。 這些應用程式通常會使用 Angular、React 或 Vue 架構。 MSAL.js 是唯一支援 SPA 的 Microsoft 驗證程式庫。
  • 公用用戶端應用程式。 這些應用程式一律會依賴已登入的使用者來取得權杖。 這類應用程式包含代表登入使用者呼叫 Web API 的桌面和行動應用程式。
  • 機密用戶端應用程式。 這些權杖會自行取得權杖。 此類別中的應用程式包含呼叫 Web API 的 Web 應用程式、呼叫其他 Web API 的 Web API,Linux 精靈和 Windows 服務。

上述前兩個項目會驗證使用者,而第三個則只會驗證使用者和後端服務間的應用程式或服務。 在此情況下,後端服務不會知道終端使用者的任何相關資訊,但其會知道有哪些應用程式正在使用。 例如,想像使用 Azure 地圖服務作為後端服務的應用程式。 地圖服務需要知道已授權的應用程式正在呼叫以進行正確計費,但不需要知道終端使用者的任何相關資訊。

單一租用戶和多租用戶 Microsoft Entra 應用程式之間有何差異?

作為開發人員,您可以選擇在應用程式註冊期間,將應用程式設為單一租用戶或多租用戶:

  • 單一租用戶應用程式僅適用於其註冊所在的租用戶,也稱為主租用戶。
  • 多租用戶應用程式同時適用於其主租用戶與其他 Microsoft Entra 租用戶中的使用者。

如果使用 Azure 入口網站進行應用程式註冊,您可以透過將其對象屬性設為下列其中一個值,以指定應用程式的租用戶:

  • 僅限此目錄中的帳戶。 這會導致單一租用戶設定。 實際上,這可讓您將應用程式的存取權授與您租用戶中的任何安全性主體,包括來賓帳戶。
  • 任何 Microsoft Entra 目錄中的帳戶。 這會導致多租用戶設定。 這可讓組織外部的使用者在其各自的 Microsoft Entra 租用戶中註冊應用程式。
  • 任何 Microsoft Entra 目錄中的帳戶與個人 Microsoft 帳戶 (例如 Skype、Xbox、Outlook.com)。 這也會導致多租用戶設定,但也會讓具有個人 Microsoft 帳戶的使用者可以使用應用程式。

注意

應用程式物件只存在於主租用戶中,但在多租用戶設定的情況下,可由不同 Microsoft Entra 租用戶的多個服務主體參考。