分享方式:


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

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

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

  • 在 Microsoft Entra 系統管理中心註冊應用程式。
  • 新增平臺重新導向 URL。
  • 啟用公用用戶端流程。
  • 更新 iOS 組態程式代碼範例檔案,以針對客戶租使用者詳細數據使用您自己的 Microsoft Entra 外部 ID。
  • 執行並測試範例 iOS 行動應用程式。

必要條件

  • Xcode

  • 外部租使用者。 如果您還沒有試用版, 請註冊免費試用

  • 公開至少一個範圍(委派許可權)和一個應用程式角色(應用程式許可權)例如 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 系統管理中心註冊您的應用程式:

  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並將它取代為授與 iOS 範例應用程式之 Web API 許可權中所記錄的範圍。
    • Enter_the_Tenant_Subdomain_Here 並將它取代為 Directory (tenant) 子域。 例如,如果您的租使用者主要網域是 contoso.onmicrosoft.com,請使用 contoso。 如果您不知道租用戶子域,請瞭解如何 閱讀租使用者詳細數據

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

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

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

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