快速入門:設定應用程式以公開 Web API
在本快速入門中,您將會向 Microsoft 身分識別平台註冊 Web API,並新增範圍以將其公開給用戶端應用程式。 透過註冊您的 Web API 並透過範圍公開它、指派擁有者和應用程式角色,您可以向存取您的 API 的授權使用者和用戶端應用程式提供對其資源的權限型存取權。
必要條件
- 包含作用中訂用帳戶的 Azure 帳戶 - 建立免費帳戶
- 完成快速入門:設定租用戶
- 在 Microsoft Entra 系統管理中心內註冊的應用程式。 如果您沒有應用程式,請立即註冊應用程式。
註冊 Web API
存取 API 需要設定存取範圍和角色。 如果您想要向用戶端應用程式公開您的資源應用程式 Web API,請設定 API 的存取範圍和角色。 如果您想要讓用戶端應用程式存取 Web API,請設定權限以存取應用程式註冊中的 API。 若要對您的 Web API 中的資源提供限定範圍的存取權,您必須先向 Microsoft 身分識別平台註冊 API。
- 以至少 雲端應用程式系統管理員 的身分登入 Microsoft Entra 系統管理中心。
- 如果您可存取多個租用戶,請使用頂端功能表中的 [設定] 圖示 ,以從 [目錄 + 訂用帳戶] 功能表,切換至包含應用程式註冊之租用戶。
- 執行註冊應用程式中的步驟 ,並略過 [重新導向 URI (選用)] 區段。 因為沒有任何使用者以互動方式登入,所以您不需要設定 Web API 的重新導向 URI。
指派應用程式擁有者
- 在您的應用程式註冊中,於 [管理] 底下選取 [擁有者],然後再選取 [新增擁有者]。
- 在新的視窗中,尋找並選取您要指派給應用程式的擁有者。 選取的擁有者會出現在右面板中。 完成後,請透過 [選取] 進行確認。 應用程式擁有者現在將出現在擁有者的清單中。
注意
請確定您想要將權限新增至的 API 應用程式和應用程式兩者都有擁有者,否則要求 API 權限時,系統不會列出 API。
指派應用程式角色
在您的應用程式註冊中,於 [管理] 底下選取 [應用程式角色],然後再選取 [建立應用程式角色]。
接下來,在 [建立應用程式角色] 窗格中指定應用程式角色的屬性。 在此逐步解說中,您可以使用範例值或自行指定值。
欄位 描述 範例 顯示名稱 您的應用程式角色的名稱 員工記錄 允許的成員類型 指定是否可以將應用程式角色指派給使用者/群組及/或應用程式 應用程式 值 在權杖的「角色」宣告中顯示的值 Employee.Records
說明 應用程式角色的更詳細描述 應用程式可以存取員工記錄 選取核取方塊以啟用應用程式角色,然後選取 [套用]。
新增範圍
提示
根據您開始使用的入口網站,本文中的步驟可能略有不同。
註冊 Web API,並獲指派應用程式角色和擁有者後,您可以將範圍新增至 API 的程式碼,以便為取用者提供更細微的權限。
用戶端應用程式中的程式碼會要求權限,以執行 Web API 所定義的作業,方法是將存取權杖連同其要求傳遞至受保護的資源 (Web API)。 然後,只有當您的 Web API 收到的存取權杖包含了作業所需的範圍時,它才會執行所要求的作業。
新增需要系統管理員和使用者同意的範圍
首先,請遵循下列步驟來建立名為 Employees.Read.All
的範例範圍:
選取公開 API。
在頁面頂端,選取 [應用程式識別碼 URI] 旁邊的 [新增]。 這會預設為
api://<application-client-id>
。 應用程式識別碼 URI 會作為您將在 API 程式碼中參考範圍的前置詞,而且必須是全域唯一的值。 選取 [儲存]。選取 [新增範圍]:
接下來,在 [新增範圍] 窗格中指定範圍的屬性。 在此逐步解說中,您可以使用範例值或自行指定值。
欄位 描述 範例 範圍名稱 您的範圍名稱。 通常的範圍命名慣例為 resource.operation.constraint
。Employees.Read.All
誰可以同意 使用者是否可同意此範圍,或是否需要管理員同意。 [僅限系統管理員] 應該用於較高特殊權限。 管理員和使用者 管理員同意顯示名稱 只有管理員才會看到範圍用途的簡短說明。 員工記錄的唯讀存取權 管理員同意描述 只有管理員才會看到範圍所授與之權限的更詳細描述。 允許應用程式具有所有員工資料的唯讀存取權。 使用者同意顯示名稱 範圍用途的簡短描述。 只有當您將可同意的人員設定為管理員和使用者時,才會向使用者顯示。 員工記錄的唯讀存取權 使用者同意描述 範圍所授與之權限的更詳細描述。 只有當您將可同意的人員設定為管理員和使用者時,才會向使用者顯示。 允許應用程式具有員工資料的唯讀存取權。 州 (縣/市) 啟用還是停用範圍。 已啟用 選取新增範圍。
(選用) 若要隱藏提示您的應用程式使用者同意您已定義的範圍,可以預先授權用戶端應用程式存取您的 Web API。 系統只會預先授權您信任的用戶端應用程式,因為您的使用者不會有機會拒絕同意。
- 在 [授權的用戶端應用程式] 下,選取 [新增用戶端應用程式]
- 輸入您要預先授權的用戶端應用程式的應用程式 (用戶端) 識別碼。 例如,您先前註冊的 Web 應用程式的識別碼。
- 在 [授權範圍] 底下,選取您想要隱藏同意提示的範圍,然後選取 [新增應用程式]。
如果您照著此選用步驟執行,則用戶端應用程式現在會是預先授權的用戶端應用程式 (PCA),當使用者在登入它時將不會提示使用者是否同意。
新增需要管理員同意的範圍
接下來,新增另一個名為 Employees.Write.All
的範例範圍 (只有管理員可以同意)。 需要管理員同意的範圍通常會用來提供較高權限作業的存取權,而且通常會由作為後端服務執行的用戶端應用程式或不以互動方式登入使用者的精靈使用。
若要新增 Employees.Write.All
範例範圍,請遵循新增範圍一節中的步驟,然後在 [新增範圍] 窗格中指定這些值。 完成時,請選取 [新增範圍]:
欄位 | 範例值 |
---|---|
範圍名稱 | Employees.Write.All |
誰可以同意 | 僅限管理員 |
管理員同意顯示名稱 | 員工記錄的寫入權限 |
管理員同意描述 | 允許應用程式具有所有員工資料的寫入權限。 |
使用者同意顯示名稱 | 無 (保留空白) |
使用者同意描述 | 無 (保留空白) |
州 (縣/市) | 已啟用 |
驗證公開的範圍
如果您已成功新增前幾節中所述的兩個範例範圍,則這些範圍會出現在 Web API 應用程式註冊的 [公開 API] 窗格中,與下列影像類似:
範圍的完整字串是 Web API 的「應用程式識別碼 URI」與範圍的「範圍名稱」的串連。 例如,如果您的 Web API 的應用程式識別碼 URI 是 https://contoso.com/api
,且範圍名稱是 Employees.Read.All
時,則完整範圍為:
https://contoso.com/api/Employees.Read.All
使用公開的範圍
在此系列的下一篇文章中,您可以使用 Web API 的存取權以及遵循本文中所定義的範圍來設定用戶端應用程式的註冊。
用戶端應用程式註冊獲授與存取您 Web API 的權限之後,身分識別平台可以對用戶端簽發 OAuth 2.0 存取權杖。 當用戶端呼叫 Web API 時,其會呈現存取權杖,其範圍 (scp
) 宣告已設定為您在用戶端應用程式註冊中指定的權限。
稍後您可以視需要公開其他範圍。 假設您的 Web API 可以公開多個與數個作業相關聯的範圍。 在執行階段,您的資源可以評估所收到 OAuth 2.0 存取權杖中的範圍 (scp
) 宣告,來控制 Web API 的存取。
後續步驟
您現已藉由設定 Web API 的範圍來將其公開,接下來請使用可存取這些範圍的權限來設定用戶端應用程式的註冊。