教學課程:準備外部租用戶以授權 Node.js 精靈應用程式
本教學課程系列示範如何建置 Node.js 精靈用戶端應用程式,並在 Microsoft Entra 系統管理中心內準備以進行驗證。 您將使用 Open Authorization (OAuth) 2.0 用戶端認證授與流程,然後將其設定為取得存取權杖以呼叫 Web API。
本教學課程內容;
- 在 Microsoft Entra 系統管理中心內註冊 Web API 並記錄其識別碼
- 設定 Web API 的應用程式角色
- 註冊用戶端精靈應用程式
- 將權限授與精靈應用程式
- 為您的精靈應用程式建立用戶端密碼
如果您已在 Microsoft Entra 系統管理中心內註冊用戶端精靈應用程式和 Web API,則可以略過本教學課程中的步驟,然後繼續取得存取權杖以呼叫 API。
必要條件
- 外部租用戶。 若要建立一個,請從下列方法中選擇:
- (建議)使用Microsoft Entra 外部 ID 擴充功能,直接在 Visual Studio Code 中設定外部租用戶使用者。
- 在 Microsoft Entra 系統管理中心建立新的外部租用戶。
註冊 Web API 應用程式
至少以應用程式開發人員的身分登入 Microsoft Entra 系統管理中心。
如果您有權存取多個租用戶,請使用頂端功能表中的 [設定] 圖示 ,以從 [目錄 + 訂用帳戶] 功能表切換至您的外部租用戶。
瀏覽至 [身分識別] > [應用程式] > [應用程式註冊]。
選取 + 新增註冊。
在出現的 [註冊應用程式] 頁面 中,輸入應用程式的註冊資訊:
在 [名稱] 區段中,輸入將向應用程式使用者顯示的有意義應用程式名稱,例如 ciam-ToDoList-api。
在 [支援的帳戶類型] 底下,選取 [僅在此組織目錄中的帳戶]。
選取 [暫存器] 以建立應用程式。
註冊完成時,將會顯示應用程式的 [概觀] 窗格。 記錄 [目錄 (租用戶) 識別碼] 和 [應用程式 (用戶端) 識別碼],以用於您的應用程式原始程式碼。
設定應用程式角色
API 必須為應用程式至少發佈一個應用程式角色 (也稱為應用程式權限),用戶端應用程式才能以自身身分取得存取權杖。 應用程式權限是 API 應該在想要讓用戶端應用程式能夠以自身身分成功驗證,且不需登入使用者時發佈的權限類型。 若要發佈應用程式權限,請遵循下列步驟:
從 [應用程式註冊] 頁面中,選取您建立的應用程式 (例如 ciam-ToDoList-api),以開啟其 [概觀] 頁面。
在 [管理] 下方,選取 [應用程式角色]。
選取 [建立應用程式角色],並輸入下列值,然後選取 [套用] 以儲存您的變更:
屬性 數值 Display name ToDoList.Read.All 允許的成員類型 應用程式 值 ToDoList.Read.All 描述 允許應用程式使用 'TodoListApi' 讀取每位使用者的待辦事項清單 再次選取 [建立應用程式角色],並為第二個應用程式角色輸入下列值,然後選取 [套用] 以儲存您的變更:
屬性 數值 Display name ToDoList.ReadWrite.All 允許的成員類型 應用程式 值 ToDoList.ReadWrite.All 描述 允許應用程式使用 'ToDoListApi' 讀取和寫入每位使用者的待辦事項清單
設定 idtyp 權杖宣告
您可以使用 idtyp 選擇性宣告,協助 Web API 判斷權杖為應用程式權杖還是應用程式 + 使用者權杖。 雖然您可以將 scp 和 roles 宣告組合用於相同用途,但使用 idtyp 宣告是告知應用程式權杖和應用程式 + 使用者權杖的最簡單方式。 例如,若權杖僅限為應用程式權杖,此宣告值為 app。
註冊精靈應用程式
若要讓您的應用程式能夠使用 Microsoft Entra 來登入使用者,必須讓 Microsoft Entra 外部 ID 知道您建立的應用程式。 應用程式註冊會在應用程式與 Microsoft Entra 之間建立信任關係。 註冊應用程式時,外部 ID 會產生稱為「應用程式 (用戶端) 識別碼」的唯一識別碼,這個值可在建立驗證要求時用來識別您的應用程式。
下列步驟顯示如何在 Microsoft Entra 系統管理中心內註冊您的應用程式:
至少以應用程式開發人員的身分登入 Microsoft Entra 系統管理中心。
如果您有權存取多個租用戶,請使用頂端功能表中的 [設定] 圖示 ,以從 [目錄 + 訂用帳戶] 功能表切換至您的外部租用戶。
瀏覽至 [身分識別] > [應用程式] > [應用程式註冊]。
選取 + 新增註冊。
在出現的 [註冊應用程式] 頁面中;
- 輸入要向應用程式使用者顯示的有意義應用程式「名稱」,例如 ciam-client-app。
- 在 [支援的帳戶類型] 底下,選取 [僅在此組織目錄中的帳戶]。
選取註冊。
應用程式的 [概觀] 窗格會在成功註冊時顯示。 記錄要在應用程式原始程式碼中使用的「應用程式 (用戶端) 識別碼」。
建立用戶端密碼
為已註冊的應用程式建立用戶端密碼。 在要求權杖時,應用程式會使用用戶端密碼來證明其身分識別。
- 從 [應用程式註冊] 頁面中,選取您建立的應用程式 (例如 ciam-client-app),以開啟其 [概觀] 頁面。
- 在 [管理] 下,選取 [憑證和密碼]。
- 選取 [新用戶端密碼]。
- 在 [描述] 方塊中,輸入用戶端密碼的描述 (例如「ciam 應用程式用戶端密碼」)。
- 在 [到期] 下方,選取祕密有效的持續時間 (根據組織的安全性規則),然後選取 [新增]。
- 記錄祕密的 [值]。 您將會在稍後的步驟中使用此值進行設定。 在您離開 [憑證和祕密] 之後,祕密值將不會再次顯示,而且無法透過任何方式擷取。 請確定將其妥善記錄。
將 API 權限授與精靈應用程式
從 [應用程式註冊] 頁面中,選取您建立的應用程式 (例如 ciam-client-app)。
在 [管理] 之下選取 [API 權限]。
在 [已設定的權限] 底下,選取 [新增權限]。
選取 [我的組織使用的 API] 索引標籤。
在 API 清單中,選取 API,例如 ciam-ToDoList-api。
選取 [應用程式權限] 選項。 我們選取此選項是因為應用程式會以自身身分 (而不是使用者) 登入。
從權限清單中,選取 [TodoList.Read.All]、[ToDoList.ReadWrite.All] (如有必要,請使用搜尋方塊)。
選取 [新增權限] 按鈕。
此時,您已正確獲指派權限。 不過,因為精靈應用程式不允許使用者與其互動,所以使用者本身無法同意這些權限。 若要解決此問題,身為管理員的您必須代表租用戶中的所有使用者同意這些權限:
- 選取 [代表 <您的租用戶名稱> 授與管理員同意],然後選取 [是]。
- 選取 [重新整理],然後驗證 [已授與 <您的租用戶名稱>] 是否出現在這兩個權限的 [狀態] 下方。
收集您的應用程式註冊詳細資料
在下一個步驟中,您會準備精靈應用程式。 請確定您有下列詳細資料:
- 您已註冊的用戶端精靈應用程式的「應用程式 (用戶端) 識別碼」。
- 您已註冊精靈應用程式的「目錄 (租用戶) 子網域」。 如果您沒有租用戶名稱,請了解如何讀取租用戶詳細資料。
- 您已建立的精靈應用程式的應用程式祕密值。
- 您已註冊的 Web API 應用程式的「應用程式 (用戶端) 識別碼」。