在範例 iOS (Swift) 應用程式中登入使用者並呼叫受保護的 Web API
本指南示範如何設定範例 iOS 行動應用程式來登入使用者,以及呼叫受保護的 ASP.NET Core Web API。
在本文中,您會執行下列工作:
- 在 Microsoft Entra 系統管理中心註冊應用程式。
- 新增平臺重新導向 URL。
- 啟用公用用戶端流程。
- 更新 iOS 組態程式代碼範例檔案,以針對客戶租使用者詳細數據使用您自己的 Microsoft Entra 外部 ID。
- 執行並測試範例 iOS 行動應用程式。
必要條件
外部租使用者。 如果您還沒有試用版, 請註冊免費試用。
公開至少一個範圍(委派許可權)和一個應用程式角色(應用程式許可權)例如 ToDoList.Read 的 API 註冊。 如果您尚未這麼做,請遵循範例 iOS 行動應用程式中呼叫 API 的指示,讓核心 Web API ASP.NET 功能受保護。 請確定您完成下列步驟:
- 註冊 Web API 應用程式。
- 設定 API 範圍。
- 設定應用程式角色。
- 設定選擇性宣告。
- 複製或下載範例 Web API。
- 設定和執行範例 Web API。
註冊應用程式
若要讓應用程式能夠使用 Microsoft Entra 登入使用者,您必須知道您建立的應用程式 Microsoft Entra 外部 ID。 應用程式註冊會建立應用程式與 Microsoft Entra 之間的信任關係。 當您註冊應用程式時,外部標識符會產生稱為應用程式的唯一 標識碼(用戶端)標識碼,這個值可用來在建立驗證要求時識別您的應用程式。
下列步驟示範如何在 Microsoft Entra 系統管理中心註冊您的應用程式:
以至少應用程式開發人員身分登入 Microsoft Entra 系統管理中心。
如果您有多個租使用者的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至外部租使用者。
流覽至 [身分>識別應用程式> 應用程式註冊]。
選取 + 新增註冊。
在出現的 [ 註冊應用程式 ] 頁面中;
- 輸入向應用程式用戶顯示的有意義應用程式名稱,例如 ciam-client-app。
- 在 [支援的帳戶類型] 底下,選取 [僅在此組織目錄中的帳戶]。
選取註冊。
應用程式 [ 概觀 ] 窗格會在成功註冊時顯示。 記錄應用程式 (用戶端) 識別碼,以用於您的應用程式原始程式碼。
新增平臺重新導向 URL
若要將您的應用程式類型指定至您的應用程式註冊,請遵循下列步驟:
- 在 [管理] 底下,選取 [驗證]。
- 在 [ 平台組態 ] 頁面上,選取 [新增平臺],然後選取 [iOS / macOS] 選項。
- 輸入專案的套件組合識別碼。 如果您下載範例 程式代碼,此值為
com.microsoft.identitysample.ciam.MSALiOS
。 - 選取 [設定] 並儲存出現在 [iOS / macOS] 組態窗格中的 MSAL 組態,以便稍後設定應用程式時輸入它。
- 選取完成。
啟用公用用戶端流程
若要將您的應用程式識別為公用用戶端,請遵循下列步驟:
在 [管理] 底下,選取 [驗證]。
在 [進階設定] 底下,針對 [允許公用用戶端流程],選取 [是]。
選取儲存以儲存變更。
授與管理員同意
從 [應用程式註冊] 頁面中,選取您建立的應用程式(例如 ciam-client-app),以開啟其 [概觀] 頁面。
在「管理」下方選取 [API 權限]。 從 [ 設定的許可權 ] 列表中,您的應用程式已獲指派 User.Read 許可權。 不過,由於租使用者是外部租使用者,因此取用者使用者本身無法同意此許可權。 身為系統管理員必須代表租使用者中的所有使用者同意此許可權:
- 選取 [授與租用戶名稱>的<管理員同意],然後選取 [是]。
- 選取 [重新整理],然後確認 [為租用戶名稱>授與] <出現在這兩個範圍的 [狀態] 底下。
將 Web API 許可權授與 iOS 範例應用程式
註冊客戶端應用程式、Web API,以及藉由建立範圍來公開 API 之後,您可以遵循下列步驟來設定用戶端對 API 的許可權:
從 [應用程式註冊] 頁面中,選取您建立的應用程式(例如 ciam-client-app),以開啟其 [概觀] 頁面。
在 [管理] 之下選取 [API 權限]。
在 [已設定的權限] 底下,選取 [新增權限]。
選取 [我的組織使用的 API] 索引標籤。
在 API 清單中,選取 api,例如 ciam-ToDoList-api。
選取 [委派的許可權] 選項。
從許可權清單中,選取 [ToDoList.Read]、[ToDoList.ReadWrite ] (如有必要,請使用搜尋方塊)。
選取 [ 新增許可權] 按鈕。
此時,您已正確指派許可權。 不過,由於租用戶是客戶的租使用者,因此取用者使用者本身無法同意這些許可權。 若要解決此問題,身為系統管理員必須代表租使用者中的所有使用者同意這些許可權:
選取 [授與租用戶名稱>的<管理員同意],然後選取 [是]。
選取 [重新整理],然後確認 [為租用戶名稱>授與] <出現在這兩個許可權的 [狀態] 底下。
從 [設定的許可權] 清單中,選取 ToDoList.Read 和 ToDoList.ReadWrite 許可權,一次一個許可權,然後複製許可權的完整 URI 以供稍後使用。 完整權限 URI 看起來類似
api://{clientId}/{ToDoList.Read}
或api://{clientId}/{ToDoList.ReadWrite}
。
複製範例 iOS 行動應用程式
若要取得範例應用程式,您可以從 GitHub 複製它,或將它下載為.zip檔案。
若要複製範例,請開啟命令提示字元並流覽至您想要建立專案的位置,然後輸入下列命令:
git clone https://github.com/Azure-Samples/ms-identity-ciam-browser-delegated-ios-sample.git
設定範例 iOS 行動應用程式
若要啟用 Web API 資源的驗證和存取,請遵循下列步驟來設定範例:
在 Xcode 中,開啟您複製的專案。
開啟 /MSALiOS/Configuration.swift 檔案。
尋找佔位元:
Enter_the_Application_Id_Here
並將它取代為您 稍早註冊之應用程式的應用程式(用戶端)標識碼 。Enter_the_Redirect_URI_Here
並將它取代為您稍早新增平臺重新導向 URL 時所下載的 Microsoft 驗證連結庫 (MSAL) 組態檔中的 kRedirectUri 值。Enter_the_Protected_API_Full_URL_Here
並將它取代為 Web API 的 URL。 Enter_the_Protected_API_Full_URL_Here應包含我們 ASP.NET Web API 的基底 URL(已部署的 Web API URL)和端點 (/api/todolist)。Enter_the_Protected_API_Scopes_Here
並將它取代為授與 iOS 範例應用程式之 Web API 許可權中所記錄的範圍。Enter_the_Tenant_Subdomain_Here
並將它取代為 Directory (tenant) 子域。 例如,如果您的租使用者主要網域是contoso.onmicrosoft.com
,請使用contoso
。 如果您不知道租用戶子域,請瞭解如何 閱讀租使用者詳細數據。
您已設定應用程式,並準備好執行。
執行 iOS 範例應用程式並呼叫 Web API
若要建置並執行您的應用程式,請遵循下列步驟:
- 若要建置並執行您的程式碼,請從 Xcode 中的 [產品] 選單選取 [執行]。 成功建置之後,Xcode 會在模擬器中啟動範例應用程式。
- 選取 [ 以互動方式 取得令牌] 以要求存取令牌。
- 選取 [API - 執行 GET ] 以呼叫先前設定 ASP.NET Core Web API。 成功呼叫 Web API 會傳回 HTTP ,而 HTTP
200
403
表示未經授權的存取。
相關內容
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: