共用方式為


教學課程:準備 iOS (Swift) 應用程式進行驗證

這是教學課程系列中的第二個教學課程,示範如何將適用於 iOS 和 macOS 的 Microsoft 驗證程式庫 (MSAL) 新增至 iOS Swift 應用程式。

在本教學課程中,您將會:

  • 將 MSAL 架構新增至 iOS (Swift) 應用程式。
  • 建立 SDK 執行個體。

必要條件

  • Xcode
  • 如果您尚未這麼做,請遵循教學課程:註冊和設定 iOS (Swift) 行動應用程式中的指示,並在外部租用戶註冊應用程式。 請務必完成下列步驟:
    • 註冊應用程式。
    • 新增平台重新導向 URL。
    • 啟用公用用戶端流程。
    • Microsoft Graph 的委派權限。
  • iOS (Swift) 專案。

將 MSAL 架構新增至 iOS (Swift) 應用程式

MSAL 驗證 SDK 是用來透過標準 OAuth2 和 OpenID Connect,將驗證整合到您的應用程式。 它可讓您使用 Microsoft 身分識別來登入使用者或應用程式。 若要將 MSAL 新增至 iOS (Swift) 專案,請遵循下列步驟:

  1. 在 Xcode 中開啟 iOS 專案。
  2. 從 [檔案] 功能表中選取 [新增套件相依性...]
  3. 輸入 https://github.com/AzureAD/microsoft-authentication-library-for-objc 作為套件 URL,然後選擇 [新增套件]

更新套件組合識別碼

在 Apple 生態系統中,套件組合識別碼是應用程式的唯一標識碼。 若要更新專案中的套件組合識別碼,請遵循下列步驟:

  1. 開啟專案設定。 在 [身分識別] 區段中,輸入 [套件組合識別碼]

  2. 以滑鼠右鍵按一下 [Info.plist],然後選取 [開啟為]>[原始程式碼]

  3. 在 dict 根節點下,將 Enter_the_bundle_Id_Here 取代為您在入口網站中使用的 [套件組合識別碼]。 請注意字串中的 msauth. 前置詞。

    <key>CFBundleURLTypes</key>
    <array>
       <dict>
          <key>CFBundleURLSchemes</key>
          <array>
             <string>msauth.Enter_the_Bundle_Id_Here</string>
          </array>
       </dict>
    </array>
    

建立 SDK 執行個體

若要在專案中建立 MSAL 執行個體,請遵循下列步驟:

  1. ViewController 類別頂端新增 import MSAL,藉此將 MSAL 程式庫匯入檢視控制器。

  2. 若要將 applicationContext 成員變數新增至 ViewController 類別,請在 viewDidLoad() 函式之前新增下列程式碼:

    var applicationContext : MSALPublicClientApplication?
    var webViewParamaters : MSALWebviewParameters?
    

    此程式碼會宣告兩個變數:applicationContext,用來儲存的 MSALPublicClientApplication 的執行個體,以及 webViewParameters,用來儲存的 MSALWebviewParameters 的執行個體。 MSALPublicClientApplication 是 MSAL 提供的類別,用於處理公用用戶端應用程式。 MSALWebviewParameters 是 MSAL 提供的類別,定義參數以設定驗證程序期間所使用的 Web 檢視。

  3. 將下列程式碼新增至檢視 viewDidLoad() 函式:

     do {
            try self.initMSAL()
        } catch let error {
            self.updateLogging(text: "Unable to create Application Context \(error)")
        }
    

    此程式碼會嘗試初始化 MSAL,處理程序執行期間發生的任何錯誤。 如果發生錯誤,即會以錯誤的詳細資料更新記錄。

  4. 新增下列建立 initMSAL() 函式的程式碼,以初始化 MSAL:

        func initMSAL() throws {
    
        guard let authorityURL = URL(string: Configuration.kAuthority) else {
            self.updateLogging(text: "Unable to create authority URL")
            return
        }
    
        let authority = try MSALCIAMAuthority(url: authorityURL)
    
        let msalConfiguration = MSALPublicClientApplicationConfig(clientId: Configuration.kClientID,
                                                                  redirectUri: Configuration.kRedirectUri,
                                                                  authority: authority)
        self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
    }
    

    此程式碼會初始化適用於 iOS 的 MSAL。 它會先嘗試使用提供的 Configuration.kAuthority 字串來建立授權單位的 URL。 如果成功,則會依據該 URL 建立 MSAL 授權單位物件。 然後,使用指定的用戶端識別碼、重新導向 URI 和授權單位來設定 MSALPublicClientApplication。 如果所有設定均已正確指定,則會使用已設定的 MSALPublicClientApplication 來初始化應用程式內容。 如果程序執行期間發生任何錯誤,則會擲回錯誤。

  5. 建立 Configuration.swift 檔案,並新增下列設定:

    import Foundation
    
    @objcMembers
    class Configuration {
        static let kTenantSubdomain = "Enter_the_Tenant_Subdomain_Here"
    
        // Update the below to your client ID you received in the portal.
        static let kClientID = "Enter_the_Application_Id_Here"
        static let kRedirectUri = "Enter_the_Redirect_URI_Here"
        static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here"
        static let kScopes = ["Enter_the_Protected_API_Scopes_Here"]
    
        static let kAuthority = "https://\(kTenantSubdomain).ciamlogin.com"
    
    }
    

    這個 Swift 設定程式碼會定義名為 Configuration 的類別,並使用 @objcMembers 標示。 它包含與驗證設定相關的各種設定參數所使用的靜態常數。 這些參數包括租用戶子網域用戶端識別碼重新導向 URI受保護的 API 端點範圍。 這些設定常數應更新為應用程式設定專用的適當值。

    尋找預留位置:

    • Enter_the_Application_Id_Here 並將它取代為您稍早註冊的應用程式所使用的應用程式 (用戶端) 識別碼
    • Enter_the_Redirect_URI_Here 並將它取代為您稍早新增平台重新導向 URL 時下載的 MSAL 設定檔中的 kRedirectUri 值。
    • Enter_the_Protected_API_Scopes_Here 並將它取代為稍早記錄的範圍。 如果您尚未記錄任何範圍,可以將此範圍清單留白。
    • Enter_the_Tenant_Subdomain_Here,並將其取代為目錄 (租用戶) 子網域。 例如,若租用戶主要網域是 contoso.onmicrosoft.com,請使用 contoso。 若不知道租用戶子網域,請了解如何讀取租用戶詳細資料

使用自訂 URL 網域 (選用)

使用自訂網域對驗證 URL 進行完整品牌化。 就使用者而言,使用者在驗證過程中一直停留在您的網域中,而不會重新導向至 ciamlogin.com 網域名稱。

使用下列步驟來使用自訂網域:

  1. 使用針對外部租用戶中的應用程式啟用自訂 URL 網域中的步驟,為外部租用戶啟用自訂 URL 網域。

  2. 開啟 Configuration.swift 檔案:

    1. kAuthority 屬性的值更新為 https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here。 以您的自訂 URL 網域取代 Enter_the_Custom_Domain_Here,並以您的租用戶識別碼取代 Enter_the_Tenant_ID_Here。 如果您沒有租用戶識別碼,請了解如何讀取租用戶詳細資料

Configuration.swift 檔案進行變更之後,如果您的自訂 URL 網域為 login.contoso.com,且您的租用戶識別碼為 aaaabbbb-0000-cccc-1111-dddd2222eeee,則您的檔案看起來應該類似以下程式碼片段:

    import Foundation

    @objcMembers
    class Configuration {
        static let kTenantSubdomain = "login.contoso.com"
        
        // Update the below to your client ID you received in the portal.
        static let kClientID = "Enter_the_Application_Id_Here"
        static let kRedirectUri = "Enter_the_Redirect_URI_Here"
        static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here"
        static let kScopes = ["Enter_the_Protected_API_Scopes_Here"]
        
        static let kAuthority = "https://\(kTenantSubdomain)/aaaabbbb-0000-cccc-1111-dddd2222eeee"
    
    }

下一步

教學課程:在 iOS (Swift) 行動應用程式中登入使用者