第 28 章
使用 Touch ID 與 Face ID 驗證

2017 年底 iPhone X 問世,現在 iOS 支援兩種型態的驗證機制:Touch ID 與 Face ID。

我們先來看一下 Touch ID。

Touch ID 是 Apple 的生物指紋驗證技術,首先見於 2013 年推出的 iPhone 5S 上。現在這個功能在大部分的iOS裝置都有配備。Touch ID 內建在 home 鍵上,使用起來很簡單。當圍繞在 home 鍵上的鋼環偵測到你的手指,Touch ID感應器立即讀取你的指紋然後分析結果,讓你能夠登入iPhone。

隨著 iPhone X 在 2017 年11 月推出後,Apple 現在已經逐漸要以 Face ID 來取代 Touch ID,也就是使用臉部來進行驗證。只要看一下你的 iPhone X,Face ID 會安全地解鎖你的裝置。

Quick note:要學習有關 Face ID,你可以參考 這個連結.

跟 Touch ID 一樣,你可以使用這個授權機制來授權在 App Store 進行購買,並以 Apple Pay 來付款。

安全以及隱私是指紋偵測晶片與Face ID 資料兩個最大的重點。依據 Apple 的說明,你的裝置並沒有儲存任何你的指紋圖像。指紋的掃描是轉譯成數學的形式,加密並儲存至 Secure Enclave處理器內。指紋資料只是被 Secure Enclave 用來做指紋確認使用,即使是 iOS 本身也不能存取指紋資料。

為了保護 Face ID 資料。也就是你的臉部的數學模型,Apple 也跟 Touch ID 一樣採用同樣的機制。Face ID 資料被加密並被 Security Enclave 所保護。

Quick note:想學習更多有關 Secure Enclave 的知識,可以參考 Apple's Platform Security document

Local Authentication 框架

回到 iOS 7,Apple 不允許開發者取得 API 並且在 App 實作 Touch ID 驗證。但隨著每一次 iOS 主要版本的釋出,Apple 也會提供大量的新技術及框架。從 iOS 10 開始, Apple 釋出了 Touch ID 的公開 API。而自 iOS 11 開始,這些 API 依照裝置所使用的驗證機制,同時支援 Touch ID 與 Face ID,因此,你現在可以開始幫你的 App 整合指紋或臉部驗證,以慢慢的取代密碼或者 PIN。

Touch ID 或 Face ID 的用法是以一個稱為 Local Authentication 的新框架為基礎。這個框架提供了提示使用者進行驗證的方法。它提供了大量的運用機會給開發者。你可以使用 Touch ID 或 Face ID 做為 App 的登入驗證,或者做為存取敏感資訊的安全防護。

這個 Local Authentication 框架的核心是 LAContext 類別,這個類別提供了兩種方法:

  • canEvaluatePolicy(_:error:) - 這個方法依既定的驗證方案(authentication policy)來評估是否能夠繼續進行驗證。在撰寫本書時,deviceOwnerAuthenticationWithBiometrics ( 也就是Touch ID 與 Face ID) 與 deviceOwnerAuthentication 是兩種可行的方案。前面這個方案,指定裝置使用者使用 Touch ID / Face ID 來驗證。而後面這個方案則指示使用者使用生物特徵( biometry)或密碼來進行驗證。換句話說,如果裝置有安裝與啟用 Touch ID 或 Face ID 的話,使用者被要求先透過 Touch ID(或 Face ID) 來進行驗證,如果不可行的話則要求輸入密碼。
  • evaluatePolicy(_:localizedReason:reply:) - 當此方法被調用時,它會顯示驗證對話框給使用者,要求進行手指掃描。這個驗證是非同步執行,完成之後,回應(reply)的 程式區塊會被呼叫,並傳回驗證結果。倘若驗證失敗,它會回傳 LAError 物件來指出失敗的原因。

經過了以上的說明,是時候來進行範例 App 的實作了。透過這個過程你將全面了解 Local Authentication 框架的用法。


本文摘自《iOS 17 App程式設計進階攻略》一書。如果你想繼續閱讀和下載完整程式碼,你可以從AppCoda網站購買完整電子版,全書範例檔皆可下載。

results matching ""

    No results matching ""