分享方式:


在範例 iOS (Swift) 應用程式中登入使用者並呼叫受保護的 Web API

本指南示範如何設定範例 iOS 行動應用程式來登入使用者,以及呼叫受保護的 ASP.NET Core Web API。

在本文中,您將執行下列工作:

  • 在 Microsoft Entra 系統管理中心註冊應用程式。
  • 新增平台重新導向 URL。
  • 啟用公用用戶端流程。
  • 更新 iOS 設定程式碼範例檔案,即可對客戶租用戶詳細資料使用您自己的 Microsoft Entra External ID。
  • 執行和測試範例 iOS 行動應用程式。

必要條件

  • Xcode

  • 一個外部租用戶。 如果您還沒有租用戶,請註冊取得免費試用

  • 公開至少一個範圍 (委派的權限) 和一個應用程式角色 (應用程式權限) 的 API 註冊,例如 ToDoList.Read。 如果您尚未這麼做,請遵循在範例 iOS 行動應用程式中呼叫 API 的指示,以擁有受功能保護的 ASP.NET Core Web API。 確定您完成下列步驟:

    • 註冊 Web API 應用程式。
    • 設定 API 範圍。
    • 設定應用程式角色。
    • 設定選用宣告。
    • 複製或下載範例 Web API。
    • 設定和執行範例 Web API。

註冊應用程式

若要讓應用程式能夠使用 Microsoft Entra 登入使用者,Microsoft Entra 外部 ID 必須知道您建立的應用程式。 應用程式註冊會在應用程式與 Microsoft Entra 之間建立信任關係。 註冊應用程式時,外部 ID 會產生稱為應用程式 (用戶端) 識別碼的唯一識別碼,這個值可在建立驗證要求時用來識別您的應用程式。

下列步驟示範如何在 Microsoft Entra 系統管理中心註冊您的應用程式:

  1. 至少以應用程式開發人員的身分登入 Microsoft Entra 系統管理中心

  2. 若有權存取多個租用戶,請使用頂端功能表中的設定圖示 ,從 [目錄 + 訂用帳戶] 功能表切換至您的外部租用戶。

  3. 瀏覽至 [身分識別] > [應用程式] > [應用程式註冊]

  4. 選取 + 新增註冊

  5. 在隨即出現的 [註冊應用程式] 頁面中;

    1. 輸入要向應用程式使用者顯示的有意義應用程式名稱,例如 ciam-client-app
    2. 在 [支援的帳戶類型] 底下,選取 [僅在此組織目錄中的帳戶]
  6. 選取註冊

  7. 應用程式的 [概觀] 窗格會在成功註冊後顯示。 記錄 [應用程式 (用戶端) 識別碼],以用於您的應用程式原始程式碼。

新增平台重新導向 URL

若要在應用程式註冊中指定您的應用程式類型,請遵循下列步驟:

  1. 在 [管理] 底下,選取 [驗證]
  2. 在 [平台設定] 頁面中,選取 [新增平台],然後選取 [iOS/macOS] 選項。
  3. 輸入您專案的組合識別碼。 若已下載範例程式碼,則此值為 com.microsoft.identitysample.ciam.MSALiOS
  4. 選取 [設定] 並儲存顯示在 [iOS/macOS 設定] 窗格中的 [MSAL 設定],以便稍後在設定應用程式時可加以輸入。
  5. 選取完成

啟用公用用戶端流程

若要將您的應用程式識別為公用用戶端,請遵循下列步驟:

  1. 在 [管理] 底下,選取 [驗證]

  2. 在 [進階設定] 下方的 [允許公用用戶端流程],選取 [是]

  3. 選取儲存以儲存變更。

  1. 從 [應用程式註冊] 頁面中,選取您建立的應用程式 (例如 ciam-client-app),以開啟其 [概觀] 頁面。

  2. 「管理」下方選取 [API 權限]。 從 [設定的權限] 清單中,您的應用程式已獲指派 User.Read 權限。 不過,由於該租用戶是外部租用戶,因此,取用者使用者本身無法同意此權限。 身為系統管理員,您必須代表租用戶中的所有使用者同意此權限:

    1. 選取 [代表 <您的租用戶名稱> 授與管理員同意],接著選取 [是]
    2. 選取 [重新整理],然後驗證 [已授與 <您的租用戶名稱>] 是否顯示在這兩個範圍的 [狀態] 下方。

將 Web API 權限授與 iOS 範例應用程式

註冊用戶端應用程式、Web API,並藉由建立範圍來公開 API 之後,即可遵循下列步驟來設定用戶端對 API 的權限:

  1. 從 [應用程式註冊] 頁面中,選取您建立的應用程式 (例如 ciam-client-app),以開啟其 [概觀] 頁面。

  2. 在 [管理] 之下選取 [API 權限]

  3. 在 [已設定的權限] 底下,選取 [新增權限]

  4. 選取 [我的組織使用的 API] 索引標籤。

  5. 在 API 清單中,選取 API,例如 ciam-ToDoList-api

  6. 選取 [委派的權限] 選項。

  7. 從權限清單中,選取 [ToDoList.Read]、[ToDoList.ReadWrite] (如有必要,請使用搜尋方塊)。

  8. 選取 [新增權限] 按鈕。

  9. 此時,您已正確獲指派權限。 不過,由於租用戶是客戶的租用戶,因此取用者使用者本身無法同意這些權限。 若要解決此問題,身為系統管理員,您必須代表租用戶中的所有使用者同意此權限:

    1. 選取 [代表 <您的租用戶名稱> 授與管理員同意],接著選取 [是]

    2. 選取 [重新整理],然後驗證 [已授與<您的租用戶名稱>] 是否顯示在這兩個權限的 [狀態] 下方。

  10. 從 [設定的權限] 清單中,選取 [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 資源的驗證和存取,請遵循下列步驟來設定範例:

  1. 在 Xcode 中,開啟您複製的專案。

  2. 開啟 /MSALiOS/Configuration.swift 檔案。

  3. 尋找預留位置:

    • 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,並將其取代為將 API 權限授與 iOS 範例應用程式中所記錄的範圍。
    • Enter_the_Tenant_Subdomain_Here,並將其取代為目錄 (租用戶) 子網域。 例如,若租用戶主要網域是 contoso.onmicrosoft.com,請使用 contoso。 若不知道租用戶子網域,請了解如何讀取租用戶詳細資料

您已設定應用程式,且準備好執行。

執行 iOS 範例應用程式並呼叫 Web API

若要建置和執行您的應用程式,請遵循下列步驟:

  1. 若要建置和執行您的程式碼,請從 Xcode 中的 [產品] 功能表選取 [執行]。 成功建置之後,Xcode 會在模擬器中啟動範例應用程式。
  2. 選取 [以互動方式取得權杖] 以要求存取權杖。
  3. 選取 [API - 執行 GET] 以呼叫先前設定的 ASP.NET Core Web API。 成功呼叫 Web API 會傳回 HTTP 200,而 HTTP 403 表示未經授權的存取。