角色型存取控制 (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 系統管理中心的使用者介面來建立應用程式角色:
以至少雲端應用程式管理員身分登入 Microsoft Entra 系統管理中心。
如果您有多個租用戶的存取權,請使用頂端功能表中的 設定 圖示
,從 目錄 + 訂閱 功能表切換至包含應用程式註冊的租用戶。流覽至 Entra ID>應用程式註冊,然後選取您想要定義角色的應用程式。
在 [管理] 下選取 [ 應用程式角色],然後選取 [ 建立應用程式角色]。
在 [ 建立應用程式角色] 窗格中,輸入角色的設定。 影像後面的資料表會描述每個設定及其參數。
欄位 描述 範例 顯示名稱 在管理員同意和應用程式分配過程中顯示的應用程式角色名稱。 此值可包含空格。 Survey Writer允許的成員類型 指定是否可以將此應用程式角色指派給使用者、應用程式或兩者。
如果可供applications使用,應用程式角色會在 應用程式註冊的 [管理] 區段 > [API 權限] > [新增權限] > [我的 API] > [選擇 API] > [應用程式權限] 中顯示為應用程式權限。Users/Groups價值 指定應用程式應在令牌中預期的角色宣告值。 該值應與應用程式碼中所參考的字串完全相符。 值不能包含空格。 Survey.Create描述 更詳細描述在管理員應用程式指派和同意體驗期間所顯示的應用程式角色。 Writers can create surveys.您要啟用此應用程式角色嗎? 說明應用程式角色是否啟用。 若要刪除應用程式角色,請取消選取此核取方塊,並先套用變更之後再嘗試刪除作業。 此設定可控制應用程式角色的使用方式和可用性,同時能夠暫時或永久停用它,而不會完全移除它。 檢查 選取 [套用 ] 以儲存變更。
當應用程式角色設定為 [已啟用] 時,任何獲指派的使用者、應用程式或群組都有其令牌中包含的應用程式角色。 這些可以是存取權杖,當您的應用程式是另一個應用程式在呼叫的 API 時,或者是識別碼權杖,當您的應用程式是用戶登入時。
當應用程式角色設定為 [已停用] 時,它就會變成非使用中且無法再指派。 不過,目前的應用程式角色指派給使用者、群組和應用程式仍會保留,應用程式角色也會繼續在令牌中傳遞。 從使用者、群組或應用程式移除應用程式角色,以確保應用程式角色也會從令牌中移除。
指派應用程式擁有者
您必須先將自己指派為應用程式擁有者,才能將應用程式角色指派給應用程式。
- 在您的應用程式註冊中,於 [ 管理] 底下選取 [ 擁有者],然後 選取 [新增擁有者]。
- 在新的視窗中,尋找並選取您要指派給應用程式的擁有者。 選取的擁有者會出現在右面板中。 完成後,請確認 選取,此時應用程式擁有者會出現在擁有者清單中。
注意
請確定想新增權限的應用程式和 API 應用程式兩者都有擁有者,否則在要求 API 權限時,該 API 不會被列出。
將應用程式角色指派給應用程式
在應用程式中新增應用程式角色之後,您可以使用 Microsoft Entra 系統管理中心,或使用 Microsoft Graph 以程式設計方式將應用程式角色指派給用戶端應用程式。 將應用程式角色指派給應用程式不應與 將角色指派給使用者混淆。
當您將應用程式角色指派給應用程式時,您會建立 應用程式許可權。 應用程式權限通常會由精靈應用程式或後端服務使用,而其需要驗證並自行進行授權的 API 呼叫 (在沒有使用者互動的情況下)。
若要使用 Microsoft Entra 系統管理中心將應用程式角色指派給應用程式:
- 以至少雲端應用程式管理員身分登入 Microsoft Entra 系統管理中心。
- 流覽至 Entra ID>App registrations ,然後選取 All applications。
- 選取 [所有應用程式 ] 以檢視所有應用程式的清單。 如果您的應用程式未出現在清單中,請使用 [所有應用程式 ] 清單頂端的篩選來限制清單,或向下卷動清單以找出您的應用程式。
- 選取您要指派應用程式角色的應用程式。
- 選取 [API 許可權>] [新增許可權]。
- 選取 [我的 API] 索引標籤,然後選取您已為其定義應用程式角色的應用程式。
- 在 [許可權] 底下,選取您要指派的角色。
- 選取 [ 新增許可權] 按鈕完成新增角色。
新增的角色應該會出現在您的應用程式註冊的 [API 權限] 窗格中。
授與管理員同意
因為這些是 應用程式許可權,而不是委派的許可權,系統管理員必須授與同意,才能使用指派給應用程式的應用程式角色。
- 在應用程式註冊的
API 權限 窗格中,選取授予 。租用戶名稱 的管理員同意 - 當系統提示您為要求的權限授與同意時,請選取 [是]。
應用程式角色的使用案例
如果您要在您的應用程式案例中實作會登入使用者的應用程式角色商務邏輯,請先在 [應用程式註冊] 中定義應用程式角色。 然後,管理員會在 [企業應用程式] 窗格中將它們指派給使用者和群組。 視案例而定,這些指派的應用程式角色會包含在針對您的應用程式發行的不同令牌中。 例如,對於允許使用者登入的應用程式,角色宣告資訊會包含在 ID 權杖中。 當您的應用程式呼叫 API 時,角色宣告會包含在存取令牌中。
如果您正在應用程式呼叫 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 系統管理中心將使用者和群組指派給角色:
- 以至少雲端應用程式管理員身分登入 Microsoft Entra 系統管理中心。
- 如果您有多個租用戶的存取權,請使用頂端功能表中的 設定 圖示
,從 目錄 + 訂閱 功能表切換至包含應用程式註冊的租用戶。 - 流覽至 Entra ID>企業應用程式。
- 選取 [所有應用程式 ] 以檢視所有應用程式的清單。 如果您的應用程式未出現在清單中,請使用 [所有應用程式 ] 清單頂端的篩選來限制清單,或向下卷動清單以找出您的應用程式。
- 選取您想要在其中將使用者或安全性群組指派給角色的應用程式。
- 在 [管理] 底下,選取 [使用者和群組]。
- 選取 [新增使用者 ] 以開啟 [ 新增指派 ] 窗格。
- 從 [新增指派] 窗格中選取 [使用者和群組] 選取器。 使用者和安全性群組的清單隨即顯示。 您可以搜尋特定使用者或群組,然後選取出現在清單中的多個使用者和群組。 選取 [ 選取 ] 按鈕以繼續進行。
- 在新增指派窗格中選取選取角色。 會顯示您為應用程式定義的所有角色。
- 選擇角色,然後選取 [ 選取 ] 按鈕。
- 選取 [ 指派 ] 按鈕,以完成將使用者和群組指派給應用程式。
確認您新增的使用者和群組出現在 [使用者和群組] 清單中。
下一步
使用下列資源深入了解應用程式角色。
- GitHub 上的程式碼範例
- 參考文件
- 影片: 使用Microsoft身分識別平臺在應用程式中實作授權 (1:01:15)