一文讀懂華為FIDO2指紋/3D 面容登入技術
前言
隨著人們對於個人資訊保安越來越重視,使用者對APP安全要求也越來越高,尤其是金融類APP,很多都已支援指紋&3D登入功能。相較於傳統登入方法,指紋&3D面容登入可省去輸入賬戶、密碼、驗證碼等環節,在最大限度地方便使用者的同時,也保證了使用者資訊的私密。那麼,如何讓自己的APP增加指紋/面容登入功能呢?
只要接入HMS線上快速驗證服務(FIDO),即可幫助你的APP實現指紋&3D面容登入功能。
HMS Core FIDO2 是個啥?
Fast Identity Online是一套身份鑑別框架協議。FIDO聯盟於2012年7月成立,至2019年5月已達251家,囊括業界領先廠商,技術規範包括UAF和U2F兩大系列,並推出FIDO 2.0專案。FIDO聯盟成員網址
FIDO成員舉例
FIDO (Fast Identity Online)規範旨在提供通用、安全、便捷的無密碼和多因子線上使用者身份驗證技術方案。支援應用於使用者登入、轉賬支付等各種需要驗證使用者身份的場景。FIDO 2(讀音:“faìduo兔”或“faìdōu 兔”)規範定義了一個強大的身份驗證解決方案。
FIDO2典型的應用場景有如下三種:
- 指紋/3D面容登入;
- 指紋/3D面容轉賬/支付;
- 雙因子認證;
本期我們將介紹第一個應用場景:指紋/3D面容登入。在應用內登入帳號時,不需要使用者輸密碼,只需要驗證指紋/3D面容即完成登入,避免密碼、撞庫等安全風險。
場景演示
下方的Gif圖展示FIDO2如何完成指紋/3D面容登入的過程。
HMS Core FIDO2 怎麼做到的?
FIDO規範定義了一套線上身份認證的技術架構。其中,除了應用和應用伺服器以外,還包括3個元件:FIDO認證器、FIDO客戶端和FIDO伺服器。
-
FIDO認證器:用來進行本地認證的機制或裝置,分為平臺認證器和漫遊認證器。在面向終端使用者時,認證器通常被稱為安全金鑰。
平臺認證器:整合在使用FIDO的裝置上的認證器,比如手機或膝上型電腦上基於指紋識別硬體的認證器。 -
漫遊認證器:遊離於使用FIDO的裝置,透過藍芽、NFC或USB連線的認證器,比如形狀類似於U盾或動態令牌的認證器。
-
FIDO客戶端:整合在平臺中(如Windows、MacOS和HMS Core)中,提供SDK給應用整合;或整合在瀏覽器中(如Chrome、Firefox和華為瀏覽器),提供JavaScript API給服務整合。FIDO客戶端是應用呼叫FIDO伺服器和FIDO認證器完成認證的橋樑。
-
FIDO伺服器:在應用伺服器需要發起FIDO認證時,生成符合FIDO規範的認證請求,傳送給應用伺服器;並在FIDO認證器完成本地認證後,接收應用伺服器返回的FIDO認證響應,並進行較驗。
FIDO規範定義了兩個主要流程:註冊和認證。從使用者登入這個實際應用場景來說,註冊流程對應開通指紋/3D面容登入的過程,認證流程對應使用指紋/3D面容完成登入的過程。
在註冊流程中,FIDO認證器產生一對使用者公私鑰對作為認證憑據,私鑰儲存在FIDO認證器中,公鑰傳送給FIDO伺服器儲存。同時,FIDO伺服器建立使用者和認證憑據的關聯關係,在認證流程中使用。
在認證流程中,FIDO認證器使用使用者私鑰對挑戰值進行簽名,FIDO伺服器使用使用者公鑰驗證簽名,驗證透過即認為是合法使用者。
如何整合華為HMS Core FIDO2?
開發前準備
FIDO2的整合準備,超級簡單,除了接入HMS SDK必備的agc、maven和混淆等配置之外,只需加上FIDO2的編譯依賴即可,座標如下:
implementation ‘com.huawei.hms:fido-fido2:5.0.0.301’
開發(表格性的,錯誤碼、返回值、編譯依賴參考ML)
FIDO2分成兩個操作,註冊和認證,處理流程類似。關鍵過程程式碼如下:
- 初始化一個Fido2Client例項
Fido2Client fido2Client = Fido2.getFido2Client(activity); - 呼叫Fido2Client.getRegistrationIntent()發起註冊。或呼叫Fido2Client.getAuthenticationIntent()發起認證。從FIDO伺服器獲取挑戰值及相關策略,並組裝請求訊息。(這裡僅提供FIDO客戶端的API,涉及與FIDO伺服器的互動,請參考相關規範,並聯系FIDO伺服器供應商獲取相關介面說明。)然後呼叫Fido2Client.getRegistrationIntent()發起註冊。或呼叫Fido2Client.getAuthenticationIntent()發起認證。
在回撥中呼叫Fido2Intent.launchFido2Activity(),啟動註冊(requestCode為Fido2Client.REGISTRATION_REQUEST)或認證(requestCode為Fido2Client.AUTHENTICATION_REQUEST)。該回撥在主執行緒中執行。
fido2Client.getRegistrationIntent(registrationRequest, registrationOptions, new Fido2IntentCallback() {
@Override
public void onSuccess(Fido2Intent fido2Intent) {
fido2Intent.launchFido2Activity(XXXActivity.this, Fido2Client.REGISTRATION_REQUEST);
}
@Override
public void onFailure(int errorCode, CharSequence errString) {
Log.e("errorCode: "+ errorCode + ", errorMsg: " + errString);
}
});
- 在回撥Activity.onActivityResult()中,呼叫getFido2RegistrationResponse()或Fido2Client.getFido2AuthenticationResponse()獲取註冊或認證的結果。
Fido2RegistrationResponse fido2RegistrationResponse = fido2Client.getFido2RegistrationResponse(data)
- 把註冊或認證的結果傳送給FIDO伺服器進行驗證。
(這裡僅提供FIDO客戶端的API,涉及與FIDO伺服器的互動,請參考相關規範,並聯系FIDO伺服器供應商獲取相關介面說明,程式碼略)
更多資訊
華為開發者官網上也有相應的演示demo,示例程式碼和開發文件。
Github演示Demo和示例程式碼:
後期預告
基於線上快速身份驗證服務,下期聊聊FIDO2定製開發能力,認證器選擇策略、UI介面定製,後面還會有實戰經驗分享,大家可以持續關注~
原作者:別吃草莓
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/755/viewspace-2826002/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一文讀懂Apache Flink技術Apache
- Android 指紋登入、支付Android
- APPCNA 指紋驗證登入APP
- 一文讀懂野指標指標
- 一文讀懂人臉識別技術
- 在這些根技術裡,讀懂華為的“三觀”
- 一文讀懂Corda分散式記賬技術分散式
- 指紋登入是怎麼跑起來的
- 一文帶你讀懂網路視覺化技術視覺化
- 關於SSH登入中 公鑰指紋 科普
- 一文讀懂GaussDB(openGauss) 的六大關鍵技術特性
- 華為Mate20 Pro微信指紋支付怎麼設定?華為Mate20 Pro微信指紋支付設定教程
- 一文讀懂mavenMaven
- 一文讀懂ServletServlet
- VRRP,堆疊,M-LAG三大虛擬化技術一文讀懂VR
- Mozilla Firefox 67 將引入“反指紋跟蹤”技術Firefox
- 一文讀懂遊戲資料分析指標的應用遊戲指標
- 裝置指紋技術詳解丨裝置指紋知多少,看這場直播就夠了!
- 一文讀懂螞蟻金服自研技術的發展和實踐
- 一文讀懂特徵工程特徵工程
- 一文讀懂 NPM 版本NPM
- 一文讀懂 Apache PulsarApache
- 一文讀懂Ka/Ks
- 一文讀懂 Data Mesh
- 一文讀懂微核心
- 一文讀懂eBPF/XDPeBPF
- IM的掃碼登入功能如何實現?一文搞懂主流的掃碼登入技術原理
- win10指紋識別登陸怎麼用_win10指紋識別登陸使用教程Win10
- 一文讀懂Spring整合RedisSpringRedis
- 一文讀懂擁塞控制
- 一文讀懂支付系統
- 一文讀懂:GBDT梯度提升梯度
- 一文讀懂前端快取前端快取
- 一文讀懂“負載均衡”負載
- 一文讀懂web組態Web
- 一文讀懂「雲託管」
- 一文讀懂Lua元表
- 一文讀懂 Kubernetes APIServer 原理APIServer