隨着人們對於我的信息安全愈來愈重視,用戶對APP安全要求也愈來愈高,尤爲是金融類APP,不少都已支持指紋&3D登陸功能。相較於傳統登陸方法,指紋&3D面容登陸可省去輸入帳戶、密碼、驗證碼等環節,在最大限度地方便用戶的同時,也保證了用戶信息的私密。那麼,如何讓本身的APP增長指紋/面容登陸功能呢?java
只要接入HMS線上快速驗證服務(FIDO),便可幫助你的APP實現指紋&3D面容登陸功能。git
Fast Identity Online是一套身份鑑別框架協議。FIDO聯盟於2012年7月成立,至2019年5月已達251家,囊括業界領先廠商,技術規範包括UAF和U2F兩大系列,並推出FIDO 2.0項目。FIDO聯盟成員網址 https://fidoalliance.org/members/github
FIDO (Fast Identity Online)規範旨在提供通用、安全、便捷的無密碼和多因子線上用戶身份驗證技術方案。支持應用於用戶登陸、轉帳支付等各類須要驗證用戶身份的場景。FIDO 2(讀音:「faìduo兔」或「faìdōu 兔」)規範定義了一個強大的身份驗證解決方案。瀏覽器
FIDO2典型的應用場景有以下三種:安全
本期咱們將介紹第一個應用場景:指紋/3D面容登陸。在應用內登陸賬號時,不須要用戶輸密碼,只須要驗證指紋/3D面容即完成登陸,避免密碼、撞庫等安全風險。服務器
下方的Gif圖展現FIDO2如何完成指紋/3D面容登陸的過程。架構
FIDO規範定義了一套在線身份認證的技術架構。其中,除了應用和應用服務器之外,還包括3個組件:FIDO認證器、FIDO客戶端和FIDO服務器。框架
FIDO認證器:用來進行本地認證的機制或設備,分爲平臺認證器和漫遊認證器。在面向最終用戶時,認證器一般被稱爲安全密鑰。
平臺認證器:集成在使用FIDO的設備上的認證器,好比手機或筆記本電腦上基於指紋識別硬件的認證器。maven
漫遊認證器:遊離於使用FIDO的設備,經過藍牙、NFC或USB鏈接的認證器,好比形狀相似於U盾或動態令牌的認證器。ide
FIDO客戶端:集成在平臺中(如Windows、MacOS和HMS Core)中,提供SDK給應用集成;或集成在瀏覽器中(如Chrome、Firefox和華爲瀏覽器),提供JavaScript API給服務集成。FIDO客戶端是應用調用FIDO服務器和FIDO認證器完成認證的橋樑。
FIDO規範定義了兩個主要流程:註冊和認證。從用戶登陸這個實際應用場景來講,註冊流程對應開通指紋/3D面容登陸的過程,認證流程對應使用指紋/3D面容完成登陸的過程。
在註冊流程中,FIDO認證器產生一對用戶公私鑰對做爲認證憑據,私鑰存儲在FIDO認證器中,公鑰發送給FIDO服務器存儲。同時,FIDO服務器創建用戶和認證憑據的關聯關係,在認證流程中使用。
在認證流程中,FIDO認證器使用用戶私鑰對挑戰值進行簽名,FIDO服務器使用用戶公鑰驗證簽名,驗證經過即認爲是合法用戶。
FIDO2的集成準備,超級簡單,除了接入HMS SDK必備的agc、maven和混淆等配置以外,只需加上FIDO2的編譯依賴便可,座標以下:
implementation 'com.huawei.hms:fido-fido2:5.0.0.301'
開發(表格性的,錯誤碼、返回值、編譯依賴參考ML)
FIDO2分紅兩個操做,註冊和認證,處理流程相似。關鍵過程代碼以下:
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); } });
Fido2RegistrationResponse fido2RegistrationResponse = fido2Client.getFido2RegistrationResponse(data)
華爲開發者官網上也有相應的演示demo,示例代碼和開發文檔。
Github演示Demo和示例代碼:
https://github.com/HMS-Core/hms-FIDO-demo-java
華爲FIDO2慕課視頻:
https://developer.huawei.com/consumer/cn/training/detail/101583008688294169
開發指南:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/introduction-0000001051069988-V5
API參考:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-References-V5/fido2overview-0000001050176660-V5
基於線上快速身份驗證服務,下期聊聊FIDO2定製開發能力,認證器選擇策略、UI界面定製,後面還會有實戰經驗分享,你們能夠持續關注~
原文連接:https://developer.huawei.com/consumer/cn/forum/topicview?fid=18&tid=0201315130192110308
原做者:別吃草莓