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 租用戶 (也稱為應用程式的「主要」租用戶)。 應用程式物件會用來做為範本或藍圖,以建立一或多個服務主體物件。 服務主體會建立於使用應用程式的每個租用戶中。 與物件導向程式設計中的類別類似,應用程式物件具有一些靜態屬性,這些屬性會套用到所有已建立的服務主體 (或應用程式執行個體)。

應用程式物件描述應用程式的三個層面:

  • 服務如何發出權杖以存取應用程式
  • 應用程式可能需要存取的資源
  • 應用程式可以採取的動作

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

應用程式註冊刀鋒視窗

Microsoft Graph Application 實體會定義應用程式物件屬性的結構描述。

服務主體物件

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

有三種類型的服務主體:

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

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

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

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

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

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

企業應用程式刀鋒視窗

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

應用程式物件為應用程式的全域代表 (用於所有租用戶),而服務主體為本機代表 (用於特定租用戶)。 應用程式物件就像範本,可從中「衍生」通用和預設屬性,用以建立相對應的服務主體物件。

應用程式物件具有:

  • 與軟體應用程式的一對一關聯性,以及
  • 與相對應服務主體物件的一對多關聯性

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

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

您對應用程式物件所做的任何變更也只會反映於其在應用程式的主要租用戶 (其註冊所在租用戶) 中的服務主體物件。 這表示,刪除應用程式物件也會刪除其主租用戶服務主體物件。 不過,透過應用程式註冊 UI 還原該應用程式物件並不會還原其對應的服務主體。 如需刪除和復原應用程式和其服務主體物件的詳細資訊,請參閱刪除及復原應用程式和服務主體物件

範例

下圖說明應用程式的應用程式物件與對應服務主體物件之間的關係,是以一個稱為「HR 應用程式」的範例多租用戶應用程式為背景。 此範例案例中有三個 Azure AD 租用戶︰

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

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

在此範例案例中:

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

後續步驟

了解如何建立服務主體: