快速入門:存取受保護 Web API 的 .NET 控制台應用程式
本快速入門使用範例 .NET 控制台應用程式,使用適用於 .NET 的 Microsoft 驗證程式庫 (MSAL) 來存取受保護的 Web API 作為自己的身分識別。 應用程式是機密用戶端應用程式的精靈應用程式,並使用客戶端認證 OAuth 流程來取得存取權杖以呼叫 Microsoft Graph API。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 如果您還未擁有帳戶,請建立免費帳戶。
- .NET 6.0 SDK 的最低需求
- Visual Studio 2022 或 Visual Studio Code
註冊應用程式和記錄識別碼
若要完成註冊,請提供應用程式名稱,並指定支援的帳戶類型。 註冊之後,應用程式 [概觀] 窗格會顯示應用程式原始程式碼中所需的識別碼。
如果您有多個租用戶的存取權,請使用頂端功能表中的 [設定] 圖示 ,從 [目錄 + 訂用帳戶] 功能表來切換至您要在其中註冊應用程式的租用戶。
瀏覽至 [身分識別]>[應用程式]>[應用程式註冊],選取 [新增註冊]。
輸入應用程式的 [名稱],例如 identity-client-daemon-app。
在 [支援的帳戶類型] 區段中,選取 [僅限此組織目錄中的帳戶]。 如需不同帳戶類型的資訊,請選取 [協助我選擇] 選項。
選取註冊。
註冊完成時,將會顯示應用程式的 [概觀] 窗格。 記錄 目錄 (租用戶) 識別碼和應用程式 (用戶端) 識別碼及物件識別碼,以用於您的應用程式原始程式碼。
注意
您可以參考修改應用程式所支援的帳戶,以變更支援的帳戶類型。
建立用戶端密碼
- 在 Microsoft Entra 系統管理中心中,瀏覽至 [身分識別]>[應用程式]>[應用程式註冊]。
- 選取您稍早註冊過的應用程式。
- 在應用程式的 [概觀] 窗格中,選取 [憑證與秘密]>[新增客戶端密碼]。
- 在 [描述] 欄位中輸入秘密的描述。
- 選取秘密的到期期限。
- 選取 [新增]。
- 記錄客戶端密碼值。 值只會顯示一次,因此請務必加以記錄。
複製或下載範例應用程式
若要取得應用程式範例,您可以從 GitHub 加以複製,或將其下載為 .zip 檔案。
若要複製範例,請開啟命令提示字元,並瀏覽至您想要建立專案的位置,然後輸入下列命令:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
下載 .zip 檔案。 將其解壓縮到名稱長度少於 260 個字元的檔案路徑。
設定專案
在 IDE 中,開啟專案資料夾,ms-identity-docs-code-dotnet/console-daemon,其中包含範例。
開啟 Program.cs,並以下列程式碼片段取代檔案內容;
// Full directory URL, in the form of https://login.microsoftonline.com/<tenant_id> Authority = " https://login.microsoftonline.com/Enter_the_tenant_ID_obtained_from_the_Microsoft_Entra_admin_center", // 'Enter the client ID obtained from the Microsoft Entra admin center ClientId = "Enter the client ID obtained from the Microsoft Entra admin center", // Client secret 'Value' (not its ID) from 'Client secrets' in the Microsoft Entra admin center ClientSecret = "Enter the client secret value obtained from the Microsoft Entra admin center", // Client 'Object ID' of app registration in Microsoft Entra admin center - this value is a GUID ClientObjectId = "Enter the client Object ID obtained from the Microsoft Entra admin center"
Authority
- 授權單位是一個 URL,指出 MSAL 可以向其要求權杖的目錄。 將 Enter_the_tenant_ID 取代為先前記錄的 Directory (tenant) 識別碼值。ClientId
- 應用程式 (也稱為用戶端) 的識別碼。 將引號中的文字取代為先前從已註冊應用程式概觀頁面記錄的Application (client) ID
值。ClientSecret
- Microsoft Entra 系統管理中心為應用程式建立的客戶端密碼。 輸入客戶端密碼值。ClientObjectId
- 用戶端應用程式的物件識別碼。 將引號中的文字取代為先前從已註冊應用程式概觀頁面記錄的Object ID
值。
執行應用程式
在終端機中,瀏覽至專案目錄,ms-identity-docs-code-dotnet/console-daemon。
執行下列命令來建置並執行應用程式:
dotnet run
應用程式會執行並顯示類似下列的回應 (為了簡潔起見而縮短):
{ "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#applications/$entity", "id": "00001111-aaaa-2222-bbbb-3333cccc4444", "deletedDateTime": null, "appId": "00001111-aaaa-2222-bbbb-3333cccc4444", "applicationTemplateId": null, "disabledByMicrosoftStatus": null, "createdDateTime": "2021-01-17T15:30:55Z", "displayName": "identity-dotnet-console-app", "description": null, "groupMembershipClaims": null, ... }
相關內容
- 透過系列教學課程:使用 Microsoft 身分識別平台來註冊應用程式以建置此 ASP.NET Web 應用程式來了解內容。
- 快速入門:透過 Microsoft 身分識別平台保護 ASP.NET Core Web API。
- 快速入門:將 ASP.NET Web 應用程式部署至 Azure App Service