將應用程式角色新增至您的應用程式,並在權杖中接收這些角色

角色型存取控制 (RBAC) 是一個熱門的機制,可在應用程式中強制授權。 RBAC 可讓系統管理員授與角色的許可權,而不是授與特定使用者或群組的許可權。 系統管理員接著可以將角色指派給不同的使用者和群組,以控制誰可以存取哪些內容和功能。

藉由搭配應用程式角色和角色宣告使用 RBAC,開發人員可以透過較少的努力安全地在其應用程式中強制執行授權。

另一種方法是使用 Microsoft Entra 群組和群組宣告,如 GitHub 上的 active-directory-aspnetcore-webapp-openidconnect-v2 程式代碼範例所示。 Microsoft Entra 群組和應用程式角色並非互斥;它們可以一起使用,以提供更精細的訪問控制。

宣告應用程式的角色

您可以在應用程式註冊程式期間使用 Microsoft Entra 系統管理中心來定義應用程式角色。 應用程式角色是在代表服務、應用程式或 API 的應用程式註冊上定義。 當使用者登入應用程式時,Microsoft Entra ID 會 roles 針對已授與用戶或服務主體的每個角色發出宣告。 這可用來實 作宣告型授權。 應用程式角色可以指派 給使用者或使用者群組。 應用程式角色也可以指派給另一個應用程式的服務主體,或 指派給受控識別的服務主體。

目前,如果您將服務主體新增至群組,然後將應用程式角色指派給該群組,Microsoft Entra ID 不會將宣告新增至它所簽發的 roles 令牌。

應用程式角色是使用 Microsoft Entra 系統管理中心的應用程式角色 UI 來宣告:

您針對 Microsoft Entra ID 強制執行的應用程式指令清單限制新增角色數目。 如需這些限制的相關信息,請參閱 Microsoft Entra 應用程式指令清單參考指令清單限制一節。

應用程式角色UI

提示

本文中的步驟可能會根據您從開始的入口網站稍有不同。

若要使用 Microsoft Entra 系統管理中心的使用者介面建立應用程式角色:

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

  2. 如果您有多個租使用者的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至包含應用程式註冊的租使用者。

  3. 流覽至 [身分>識別應用程式> 應用程式註冊 然後選取您要定義應用程式角色的應用程式。

  4. 在 [管理] 下選取 [ 應用程式角色],然後選取 [ 建立應用程式角色]。

    An app registration's app roles pane in the Azure portal

  5. 在 [建立應用程式角色] 窗格中,輸入角色的設定。 下圖的下表描述每個設定及其參數。

    An app registration's app roles create context pane in the Azure portal

    欄位 描述 範例
    顯示名稱 顯示在系統管理員同意和應用程式指派體驗中之應用程式角色的顯示名稱。 此值可能包含空格。 Survey Writer
    允許的成員類型 指定此應用程式角色是否可以指派給使用者、應用程式或兩者。

    當可供 使用applications時,應用程式角色會在應用程式註冊的 [管理] 區段> API 許可權>中顯示為應用程式許可權。新增許可權>我的 API > 選擇 API > 應用程式許可權
    Users/Groups
    指定應用程式應該在令牌中預期的角色宣告值。 值應該完全符合應用程式程式代碼中所參考的字串。 值不能包含空格。 Survey.Create
    說明 系統管理應用程式指派和同意體驗期間所顯示之應用程式角色的更詳細描述。 Writers can create surveys.
    您要啟用此應用程式角色嗎? 指定是否啟用應用程式角色。 若要刪除應用程式角色,請取消選取此複選框,並在嘗試刪除作業之前套用變更。 此設定可控制應用程式角色的使用方式和可用性,同時能夠暫時或永久停用它,而不會完全移除它。 已選取
  6. 選取 [套用] 以儲存變更。

當應用程式角色設定為已啟用時,任何獲指派的使用者、應用程式或群組都已將其包含在其令牌中。 當您的應用程式是應用程式登入使用者時所呼叫的應用程式或標識元令牌所呼叫的 API 時,這些令牌可以是存取令牌。 如果設定為停用,它就會變成非使用中且無法再指派。 任何先前的被指派者仍會將應用程式角色包含在其令牌中,但它不會有任何作用,因為它不再主動可指派。

指派應用程式擁有者

如果您尚未這麼做,則必須將自己指派為應用程式擁有者。

  1. 在您的應用程式註冊中,於 [管理] 底下選取 [擁有者],然後選取 [新增擁有者]。
  2. 在新視窗中,尋找並選取您要指派給應用程式的擁有者。 選取的擁有者會出現在右側面板中。 完成後,請確認 [ 選取]。 應用程式擁有者現在會出現在擁有者的清單中。

注意

請確定您想要同時將許可權新增至兩者都有擁有者,否則要求 API 許可權時不會列出 API。

將應用程式角色指派給應用程式

在應用程式中新增應用程式角色之後,您可以使用 Microsoft Entra 系統管理中心,或使用 Microsoft Graph 以程式設計方式將應用程式角色指派給用戶端應用程式。 這不會與 將角色指派給使用者混淆。

當您將應用程式角色指派給應用程式時,您會建立 應用程式許可權。 應用程式權限通常會由精靈應用程式或後端服務使用,而其需要驗證並自行進行授權的 API 呼叫 (在沒有使用者互動的情況下)。

若要使用 Microsoft Entra 系統管理中心將應用程式角色指派給應用程式:

  1. 以至少雲端應用程式 管理員 istrator 身分登入 Microsoft Entra 系統管理中心
  2. 流覽至 [身分>識別應用程式> 應用程式註冊 然後選取 [所有應用程式]。
  3. 選取 [所有應用程式],以檢視所有應用程式的清單。 如果您的應用程式未顯示在清單中,請使用 [所有應用程式] 清單頂端的各種篩選來限制清單,或向下捲動清單以找出您的應用程式。
  4. 選取您要指派應用程式角色的應用程式。
  5. 選取 API 權限>新增權限
  6. 選取 [ 我的 API] 索引 標籤,然後選取您定義應用程式角色的應用程式。
  7. [許可權] 底下,選取您想要指派的角色。
  8. 選取 [ 新增許可權] 按鈕完成新增角色。

新增的角色應該會出現在應用程式註冊的 API 許可權 窗格中。

因為這些是應用程式權限,而不是委派權限,所以管理員必須授與同意,才能使用指派給應用程式的應用程式角色。

  1. 在應用程式註冊的 API 許可權窗格中,選取 [授與租用戶名稱>的<管理員同意]。
  2. 當系統提示您授與要求許可權同意時,請選取 [是 ]。

[狀態] 數據行應該會反映已授與租用戶名稱>的<同意。

應用程式角色的使用案例

如果您要實作應用程式角色商業規則來登入應用程式案例中的使用者,請先在 應用程式註冊定義應用程式角色。 然後,系統管理員會將他們指派給 [企業應用程式] 窗格中的使用者和群組。 這些指派的應用程式角色隨附於針對您的應用程式發行的任何令牌中。

如果您正在應用程式呼叫 API 情境中落實應用程式角色商業邏輯,您要註冊兩個應用程式。 一個應用程式註冊適用於應用程式,而第二個應用程式註冊則適用於API。 在此情況下,請定義應用程式角色,並在 API 的應用程式註冊中將它們指派給使用者或群組。 當使用者使用應用程式進行驗證,並要求存取權杖以呼叫 API 時,會在權杖中包含角色宣告。 下一個步驟是將程式代碼新增至 Web API,以在呼叫 API 時檢查這些角色。

若要瞭解如何將授權新增至 Web API,請參閱 受保護的 Web API:驗證範圍和應用程式角色

應用程式角色與群組

雖然您可以使用應用程式角色或群組進行授權,但兩者之間的主要差異可能會影響您決定要用於案例的案例。

應用程式角色 群組
它們專屬於應用程式,且定義於應用程式註冊中。 它們會隨著應用程式移動。 它們並非專屬於應用程式,而是 Microsoft Entra 租使用者。
拿掉應用程式註冊時,會移除應用程式角色。 即使移除應用程式,群組仍會保持不變。
在宣告中 roles 提供。 在宣告中 groups 提供。

開發人員可以使用應用程式角色,以控制使用者是否可登入應用程式,或應用程式是否可取得 Web API 的存取權杖。 若要將此安全性控制延伸至群組,開發人員和管理員也可以將安全性群組指派給應用程式角色。

開發人員若想要自行在應用程式中描述並控制授權的參數,則更偏好使用應用程式角色。 例如,使用群組進行授權的應用程式會在下一個租使用者中中斷,因為群組標識符和名稱可能不同。 使用應用程式角色的應用程式仍然安全。 事實上,將群組指派給應用程式角色很受 SaaS 應用程式歡迎的原因,因為它允許在多個租使用者中布建 SaaS 應用程式。

將使用者和群組指派給 Microsoft Entra 角色

在應用程式中新增應用程式角色之後,您可以將使用者和群組指派給 Microsoft Entra 角色。 您可以透過入口網站的UI,或使用 Microsoft Graph 以程式設計方式,將使用者和群組指派給角色。 當指派給各種角色的使用者登入應用程式時,其令牌會在宣告中 roles 擁有其指派的角色。

若要使用 Microsoft Entra 系統管理中心將使用者和群組指派給角色:

  1. 以至少雲端應用程式 管理員 istrator 身分登入 Microsoft Entra 系統管理中心
  2. 如果您有多個租使用者的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至包含應用程式註冊的租使用者。
  3. 流覽至 [身分>識別應用程式企業應用程式]。>
  4. 選取 [所有應用程式],以檢視所有應用程式的清單。 如果您的應用程式未顯示在清單中,請使用 [所有應用程式] 清單頂端的各種篩選來限制清單,或向下捲動清單以找出您的應用程式。
  5. 選取您想要在其中將使用者或安全性群組指派給角色的應用程式。
  6. 在 [管理] 下選取 [使用者和群組]。
  7. 選取 [新增使用者] 以開啟 [新增指派] 窗格。
  8. 選取 [新增指派] 窗格中的 [使用者和群組] 選取器。 使用者和安全性群組的清單隨即顯示。 您可以搜尋特定使用者或群組,然後選取出現在清單中的多個使用者和群組。
  9. 選取使用者和群組之後,請選取 [選取] 按鈕以繼續。
  10. 選取 [新增指派] 窗格中的 [選取角色]。 您為應用程式定義的所有角色隨即顯示。
  11. 選擇角色,然後選取 [選取] 按鈕。
  12. 選取 [指派] 按鈕,以完成將使用者和群組指派給應用程式的作業。

確認您新增的使用者和群組出現在 [使用者和群組] 清單中。

下一步

深入瞭解具有下列資源的應用程式角色。