共用方式為


使用 Azure AD B2C 在範例 iOS Swift 應用程式中設定驗證

這很重要

自 2025 年 5 月 1 日起,Azure AD B2C 將不再可供新客戶購買。 在我們的常見問題中深入瞭解

本文使用 iOS Swift 應用程式範例來說明如何將 Azure Active Directory B2C (Azure AD B2C) 驗證新增至行動應用程式。

概觀

OpenID Connect (OIDC) 是建置於 OAuth 2.0 之上的驗證通訊協定。 您可以使用 OIDC 安全地將使用者登入應用程式。 此行動應用程式範例會使用 Microsoft 驗證連結庫 (MSAL) 搭配 OIDC 授權碼證明金鑰進行程式碼交換 (PKCE) 流程。 MSAL 是Microsoft提供的連結庫,可簡化將驗證和授權支援新增至行動應用程式。

登入流程包含下列步驟:

  1. 用戶開啟應用程式,然後選取 [登入]。
  2. 應用程式會開啟行動裝置的系統瀏覽器,並啟動對 Azure AD B2C 的驗證要求。
  3. 用戶 註冊或登入重設密碼,或使用 社交帳戶登入。
  4. 使用者成功登入之後,Azure AD B2C 會將授權碼傳回給應用程式。
  5. 應用程式會採取下列動作:
    1. 它會將授權碼交換至標識碼令牌、存取令牌和重新整理令牌。
    2. 它會讀取身分識別令牌的權利要求。
    3. 它會將令牌儲存在記憶體快取中,以便日後使用。

應用程式註冊概觀

若要讓應用程式使用 Azure AD B2C 登入並呼叫 Web API,請在 Azure AD B2C 目錄中註冊兩個應用程式:

  • 行動 應用程式 註冊可讓您的應用程式使用 Azure AD B2C 登入。 在應用程式註冊期間,指定 重新導向 URI。 重新導向 URI 是使用者在向 Azure AD B2C 驗證之後,由 Azure AD B2C 重新導向的端點。 應用程式註冊程式會產生 應用程式識別碼,也稱為 用戶端標識碼,可唯一識別您的行動應用程式(例如 ,應用程式識別碼:1)。

  • Web API 註冊可讓您的應用程式呼叫受保護的 Web API。 註冊會公開 Web API 許可權(範圍)。 應用程式註冊程式會產生 應用程式識別碼,以唯一識別您的 Web API(例如 ,應用程式識別碼:2)。 授與行動應用程式 (應用程式識別碼: 1) Web API 範圍的許可權(應用程式識別元:2)。

下列圖表說明應用程式註冊和架構:

行動應用程式與 Web API 呼叫註冊和令牌的圖表。

呼叫 Web API

驗證完成之後,使用者會與應用程式互動,而該應用程式會叫用受保護的 Web API。 該 Web API 會使用持有人權杖驗證。 持有人權杖是應用程式從 Azure AD B2C 取得的存取權杖。 應用程式會在 HTTPS 要求的授權標頭中傳遞權杖。

Authorization: Bearer <access token>

如果存取權杖的範圍與 Web API 的範圍不符,則驗證程式庫會取得具有正確範圍的新存取權杖。

註銷流程

登出流程包含下列步驟:

  1. 使用者從應用程式登出。
  2. 應用程式會清除其工作階段物件,而驗證程式庫會清除其權杖快取。
  3. 應用程式會將使用者帶到 Azure AD B2C 登出端點,以終止該 Azure AD B2C 工作階段。
  4. 系統會將使用者重新導向回到應用程式。

先決條件

執行下列各項的電腦:

步驟 1:設定您的使用者流程

當使用者嘗試登入應用程式時,應用程式會透過使用者流程,啟動對授權端點的驗證要求。 使用者流程會定義並控制使用者體驗。 當使用者完成使用者流程之後,Azure AD B2C 會產生權杖,然後將使用者重新導向回到您的應用程式。

如果您尚未這麼做,請建立使用者流程或自訂原則。 重複步驟,以建立下列三個不同的使用者流程:

  • 合併的登入和註冊使用者流程 (例如 susi)。 這個使用者流程也支援忘記密碼體驗。
  • 設定檔編輯使用者流程 (例如 edit_profile)。
  • 密碼重設使用者流程 (例如 reset_password)。

Azure AD B2C 會在使用者流程名稱前面加上 B2C_1_。 例如,susi 會成為 B2C_1_susi

步驟 2:註冊行動應用程式

建立行動應用程式和 Web API 應用程式註冊,並指定 Web API 的範圍。

步驟 2.1:註冊 Web API 應用程式

若要建立 Web API 應用程式註冊 (「應用程式識別碼:2」),請遵循下列步驟:

  1. 登入 Azure 入口網站

  2. 確定您使用的目錄包含您的 Azure AD B2C 租用戶。 選取入口網站工具列中的 [目錄 + 訂用帳戶] 圖示。

  3. 在 [入口網站設定] | [目錄 + 訂用帳戶] 頁面上,在 [目錄名稱] 清單中尋找 Azure AD B2C 目錄,然後選取 [切換]

  4. 在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]

  5. 選取 [應用程式註冊],然後選取 [[新增註冊]。

  6. 針對 [名稱],輸入應用程式的名稱 (例如 my-api1)。 保留 [重新導向 URI] 和 [支援的帳戶類型] 的預設值。

  7. 選取 註冊

  8. 當應用程式註冊完成之後,選取 [概觀]

  9. 當您設定 Web 應用程式時,請記錄 [應用程式 (用戶端) 識別碼] 值,以供稍後使用。

    示範如何取得 Web A P I 應用程式識別碼的螢幕快照。

步驟 2.2:設定 Web API 應用程式範圍

  1. 選取您建立的 my-api1 應用程式 (「應用程式識別碼:2」),以開啟其 [概觀] 頁面。

  2. [管理] 底下,選取 [ 公開 API]。

  3. 選取 [應用程式識別碼 URI] 旁邊的 [設定] 連結。 以唯一的名稱 (例如 tasks-api) 取代預設值 (GUID),然後選取 [儲存]

    當您的 Web 應用程式要求 Web API 的存取權杖時,應該新增此 URI 作為您針對 API 所定義之每個範圍的前置詞。

  4. 此 API 定義的範圍 下,選取 新增範圍

  5. 若要建立定義 API 讀取存取權的範圍:

    1. 針對 [範圍名稱],輸入 tasks.read
    2. 針對 [管理員同意顯示名稱],輸入工作 API 的讀取存取權
    3. 針對 [管理員同意描述],輸入允許工作 API 的讀取存取權
  6. 選取新增範圍

  7. 選取 [新增範圍],然後新增定義 API 寫入存取權的範圍:

    1. 針對 [範圍名稱],輸入 tasks.write
    2. 針對 [管理員同意顯示名稱],輸入工作 API 的寫入存取權
    3. 針對 [管理員同意描述],輸入允許工作 API 的寫入存取權
  8. 選取新增範圍

步驟 2.3:註冊行動應用程式

若要建立行動應用程式註冊,請執行下列動作:

  1. 登入 Azure 入口網站
  2. 選取 [應用程式註冊],然後選取 [[新增註冊]。
  3. 在 [ 名稱] 底下,輸入應用程式的名稱(例如 iOs-app1)。
  4. 支援的帳戶類型下,選取 任何身分提供者或組織目錄中的帳戶(用於驗證具有使用者流程的使用者)
  5. [重新導向 URI] 底下,選取 [公用用戶端/原生和桌面] ,然後在 [URL] 方塊中輸入 msauth.com.microsoft.identitysample.MSALiOS://auth
  6. 選取 註冊
  7. 當應用程式註冊完成之後,選取 [概觀]
  8. 當您設定行動應用程式時,請記錄 應用程式 (client) 識別碼 以供稍後使用。 醒目提示行動應用程式識別碼的螢幕快照。

步驟 2.4:授與 Web API 的行動應用程式許可權

若要為應用程式 (應用程式識別碼:1) 授與權限,請遵循下列步驟:

  1. 選取 [應用程式註冊],然後選取您建立的應用程式 (「應用程式識別碼:1」)。

  2. 「管理」下方選取 [API 權限]

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

  4. 請選取「我的 API」 索引標籤。

  5. 選取 Web 應用程式應獲授存取權的 API (「應用程式識別碼:2」)。 例如,輸入 my-api1

  6. 在 [權限] 下,展開 [工作],然後選取您稍早定義的範圍 (例如 tasks.readtasks.write)。

  7. 選取新增權限

  8. 選取 [代表 <您的租用戶名稱> 授與管理員同意]

  9. 選擇

  10. 選取 [重新整理],然後驗證 [授與...] 會出現在這兩個範圍的 [狀態] 下方。

  11. 從 [設定的權限] 清單中,選取您的範圍,然後複製範圍的完整名稱。

    已設定許可權窗格的螢幕快照,其中顯示已授與讀取訪問許可權。

步驟 3:設定範例 Web API

此範例會取得存取令牌,其中包含行動應用程式可用於 Web API 的相關範圍。 若要從程式代碼呼叫 Web API,請執行下列動作:

  1. 使用現有的 Web API,或建立新的 API。 如需詳細資訊,請參閱 使用 Azure AD B2C 在您自己的 Web API 中啟用驗證
  2. 變更範例程式代碼以 呼叫 Web API
  3. 設定 Web API 之後,請複製 Web API 端點的 URI。 在下一個步驟中,您將使用 Web API 端點。

小提示

如果您沒有 Web API,您仍然可以執行此範例。 在此情況下,應用程式會傳回存取令牌,但無法呼叫 Web API。

步驟 4:取得 iOS 行動應用程式範例

  1. 下載 .zip 檔案,或從 GitHub 存放庫複製範例 Web 應用程式。

    git clone https://github.com/Azure-Samples/active-directory-b2c-ios-swift-native-msal
    
  2. 使用 CocoaPods 安裝 MSAL 程式庫。 在終端機視窗中,移至專案根資料夾。 此資料夾包含 podfile 檔案。 執行下列命令:

    pod install
    
  3. MSALiOS.xcworkspace使用 Xcode 開啟工作區。

步驟 5:設定範例行動應用程式

開啟 ViewController.swift 檔案。 類別 ViewController 成員包含 Azure AD B2C 識別提供者的相關信息。 行動應用程式會使用此資訊來建立與 Azure AD B2C 的信任關係、登入和註銷使用者、取得令牌,以及驗證它們。

更新下列類別成員:

鑰匙 價值觀
k租戶名稱 您 Azure AD B2C 租用戶的完整租用戶名稱 (例如 contoso.onmicrosoft.com)。
kAuthorityHostName Azure AD B2C 租用者名稱 的第一個部分(例如contoso.b2clogin.com)。
k用戶端 ID 步驟 2.3 的行動應用程式標識碼。
kRedirectUri 的 步驟 2.3 的行動應用程式重新導向 URI。 msauth.com.microsoft.identitysample.MSALiOS://auth
註冊或登入政策 您在 步驟 1 中建立的註冊或登入使用者流程或自定義原則。
k編輯個人資料政策 您在 步驟 1 中建立的編輯設定檔使用者流程或自定義原則。
kGraphURI (選擇性)您在 步驟 3 中建立的 Web API 端點(例如 , https://contoso.azurewebsites.net/hello
k範圍 您在 步驟 2.4 中建立的 Web API 範圍。

步驟 6:執行及測試行動應用程式

  1. 使用 連線 iOS 裝置的模擬器建置並執行專案。

  2. 選取 [登入],然後使用您的 Azure AD B2C 本機或社交帳戶註冊或登入。

    醒目提示如何啟動登入流程的螢幕快照。

  3. 成功驗證之後,您會在導覽列中看到您的顯示名稱。

    強調顯示 Azure AD B2C 存取令牌和使用者 ID 的螢幕快照。

後續步驟

學習怎麼做: