Azure Active Directory 中的應用程式和服務主體物件

本文說明 Azure Active Directory (Azure AD) 中的應用程式註冊、應用程式物件和服務主體:它們的內容、使用方式,以及它們彼此之間的關聯方式。 另外也會顯示多租使用者範例案例,以說明應用程式的應用程式物件和對應的服務主體物件之間的關聯性。

應用程式註冊

若要將身分識別和存取管理功能委派給 Azure AD,必須向 Azure AD 租使用者註冊應用程式。 當您向 Azure AD 註冊您的應用程式時,您會建立應用程式的身分識別設定,讓它能夠與 Azure AD 整合。 當您在 Azure 入口網站中註冊應用程式時,您可以選擇它是單一租使用者 (只能在您的租使用者中存取) 或在其他租使用者中可存取的多租使用者 (,而且可以選擇性地設定將存取權杖傳送至) 的重新導向 URI (。 如需註冊應用程式的逐步指示,請參閱 應用程式註冊快速入門

當您完成應用程式註冊時,您會有應用程式的全域唯一實例 (應用程式物件) 存在於您的主租使用者或目錄中。 您也會有應用程式的全域唯一識別碼, (應用程式或用戶端識別碼) 。 在入口網站中,您可以新增秘密或憑證和範圍來讓您的應用程式運作、在登入對話方塊中自訂應用程式的商標等等。

如果您在入口網站中註冊應用程式,則會自動在您的主租使用者中建立應用程式物件和服務主體物件。 如果您使用 Microsoft Graph api 來註冊/建立應用程式,則建立服務主體物件是個別的步驟。

應用程式物件

Azure AD 應用程式是由其唯一一個應用程式物件所定義,該物件位於應用程式註冊所在的 Azure AD 租使用者中 (稱為應用程式的「home」租使用者) 。 應用程式物件會用來做為範本或藍圖,以建立一或多個服務主體物件。 在使用應用程式的每個租使用者中建立服務主體。 與物件導向程式設計中的類別類似,應用程式物件具有一些靜態屬性,這些屬性會套用到所有已建立的服務主體, (或應用程式實例) 。

應用程式物件會描述應用程式的三個層面:服務如何發出權杖以存取應用程式、應用程式可能需要存取的資源,以及應用程式可以採取的動作。

您可以使用 Azure 入口網站中的 應用程式註冊 分頁來列出和管理您的主租使用者中的應用程式物件。

應用程式註冊分頁

Microsoft Graph應用程式實體會定義應用程式物件屬性的架構。

服務主體物件

若要存取受到 Azure AD 租用戶保護的資源,需要存取權的實體必須以安全性主體呈現。 這項需求適用于使用者 (使用者主體) 和 (服務主體) 的應用程式。 安全性主體會定義 Azure AD 租用戶中使用者/應用程式的存取原則和權限。 此動作可啟用核心功能,例如登入期間的使用者/應用程式驗證,以及資源存取期間的授權。

有三種類型的服務主體:

  • 應用程式 -服務主體的類型是單一租使用者或目錄中全域應用程式物件的本機標記法或應用程式實例。 在此情況下,服務主體是從應用程式物件建立的實體實例,並繼承該應用程式物件的特定屬性。 服務主體會建立於使用應用程式的每個租用戶中,並參考全域唯一的應用程式物件。 服務主體物件會定義應用程式實際上可在特定租使用者中進行的動作、誰可以存取應用程式,以及應用程式可以存取哪些資源。

    當應用程式擁有權限可存取租用戶中的資源時 (通過註冊時或同意),服務主體物件就會隨即建立。 當您使用 Azure 入口網站註冊應用程式時,系統會自動建立服務主體。 您也可以使用 Azure PowerShell、Azure CLI、Microsoft Graph 和其他工具,在租使用者中建立服務主體物件。

  • 受控識別 -此類型的服務主體可用來代表 受控識別。 受控識別可免除開發人員管理認證的需求。 受控識別會提供一個身分識別,讓應用程式在連接到支援 Azure AD 驗證的資源時使用。 啟用受控識別時,會在您的租使用者中建立代表該受控識別的服務主體。 代表受控識別的服務主體可獲得存取權和許可權,但無法直接更新或修改。

  • 舊版 -這種類型的服務主體代表繼承應用程式,也就是在引進應用程式註冊之前建立的應用程式,或是透過舊版體驗建立的應用程式。 舊版服務主體可以有認證、服務主體名稱、回復 Url 和其他授權使用者可編輯的屬性,但沒有相關聯的應用程式註冊。 服務主體只能在建立它的租使用者中使用。

Microsoft Graph ServicePrincipal 實體會定義服務主體物件屬性的架構。

您可以使用 Azure 入口網站中的 [ Enterprise 應用程式] 分頁來列出和管理租使用者中的服務主體。 您可以看到服務主體的許可權、使用者同意的許可權、使用者已完成該同意、登入資訊等。

Enterprise apps 分頁

應用程式物件和服務主體之間的關聯性

應用程式物件是應用程式的 全域 標記法,可跨所有租使用者使用,而服務主體是在特定租使用者中使用的 本機 標記法。 應用程式物件就像範本,可從中「衍生」通用和預設屬性,用以建立相對應的服務主體物件。

應用程式物件具有:

  • 與軟體應用程式的1:1 關係,以及
  • 一對多的關聯性,與其對應的服務主體物件 (s) 。

每一個會用到應用程式的租用戶中必須建立服務主體,才能讓它建立身分識別來登入及/或存取租用戶所保護的資源。 單一租用戶的應用程式只能有一個服務主體 (在其主租用戶中),並在應用程式註冊期間建立和同意使用。 多租使用者應用程式也會在每個租使用者中建立一個服務主體,而該租使用者中的使用者已同意其使用方式。

修改和刪除應用程式的後果

您對應用程式物件所做的任何變更,也會反映在應用程式的主要租使用者中的服務主體物件,只 (註冊) 的租使用者。 這表示,刪除應用程式物件也會刪除其主租使用者服務主體物件。 不過,還原該應用程式物件不會還原其對應的服務主體。 對於多租使用者應用程式,應用程式物件的變更不會反映在任何取用者租使用者的服務主體物件中,直到透過 應用程式存取面板 移除存取權,然後再次授與。

範例

下圖說明應用程式的應用程式物件與範例多租使用者應用程式(稱為 HR 應用 程式)內容中對應的服務主體物件之間的關聯性。 此範例案例中有三個 Azure AD 租用戶︰

  • Adatum -開發 HR 應用程式 的公司所使用的租使用者
  • Contoso -contoso 組織所使用的租使用者,也就是 HR 應用程式 的取用者
  • Fabrikam - Fabrikam 組織所使用的租用戶,其亦會取用 HR 應用程式

應用程式物件與服務主體物件之間的關聯性

在此範例案例中:

步驟 描述
1 在應用程式的主要租用戶中建立應用程式和服務主體物件的程序。
2 當 Contoso 和 Fabrikam 的系統管理員完成同意,系統就會在其公司的 Azure AD 租用戶中建立服務主體物件,並指派系統管理員所授與的權限。 也請注意,HR 應用程式可能會設定/設計為允許由使用者同意以進行個人使用。
3 HR 應用程式的取用者租用戶 (Contoso 和 Fabrikam) 都分別擁有自己的服務主體物件。 每個均代表他們在執行階段的應用程式執行個體使用,其中皆受到個別系統管理員所同意的權限控管。

下一步

瞭解如何建立服務主體: