cordova 指纹验证登录

关键词:指纹验证登录

需求:在APP上实现指纹验证登录

指纹验证登录,顾名思义,基于手机系统提供的指纹认证API,实现方便用户登录的功能。

实现流程:

1:初始化 -- 获取手机指纹识别支持情况(传感器支持,API支持,用户设置支持等)

2:用户凭证登录(通常是用户名+密码)成功,调取系统指纹验证,验证通过,本地存储用户凭证;

3:登录画面调用系统指纹验证,验证通过,使用本地存储的用户凭证执行登录。

对手机指纹验证的个人理解是:指纹认证通过的用户,对手机而言是可信用户;而对我们的系统而言,拥有合法有效凭证的人才是可信用户。第2步中,在用户使用凭证登录成功后,调取指纹验证,意在让用户“授权”我们的程序,能够在指纹验证通过的情况下使用其凭证,在用户授权程序后,程序才可以把用户凭证记录下来,以用于之后的登录过程。这两个可信用户联系起来,就相当于手机的可信用户就是我们系统的可信用户,在用户通过指纹验证后,就可以成功登录系统。

使用的插件:

                   android: cordova-plugin-android-fingerprint-auth

                   ios: cordova-plugin-touch-id

1: cordova-plugin-android-fingerprint-auth

https://www.npmjs.com/package/cordova-plugin-android-fingerprint-auth

这个插件将打开一个本地对话框,提示用户使用指纹进行身份验证。如果设备有安全锁屏(模式、PIN或密码),用户可以缩退选择使用其他方法,进行身份验证。

此插件仅适用于制造商已实现Android 6.0指纹认证API的设备。这个插件不支持Samsung Pass SDK,也不是所有的三星设备都实现Android 6.0指纹认证API。

cordova plugin add cordova-plugin-android-fingerprint-auth

插件安装后,会自动在window上绑定FingerprintAuth属性,使用它访问插件

  • Call isAvailable() to check the fingerprint status.
  • Call encrypt() or decrypt() show the Authentication Dialog.
  • Call delete() when you want to delete the cipher for the user.

该插件在指纹验证过程中提供了凭证加密解密的功能;即在保存凭证的指纹验证过程中将用户凭证作为参数传给它,success回调时会得到password加密后的token;在执行指纹验证登录的过程中将该token传给它,在success回调时会得到解密后的password;相当于插件给本地存储的凭证加了个签名。

FingerprintAuth.isAvailable(isAvailableSuccessCallback, isAvailableErrorCallback)

function isAvailableSuccessCallback(result) {

// result = {

// isAvailable:boolean, // Fingerprint Authentication Dialog is available for use.

// isHardwareDetected:boolean, // Device has hardware fingerprint sensor.

// hasEnrolledFingerprints:boolean // Device has any fingerprints enrolled.

// }

}

FingerprintAuth.encrypt(encryptConfig, encryptSuccessCallback, encryptErrorCallback)

encryptConfig 参数是一个参数对象:

{

clientId: string // 在使用凭证加解密时是必须的,因为他作为android key store使用,并且是加密是的盐;

usename: string // 在使用凭证加解密时是必须的,因为他作为android key store使用,并且是加密是的盐;

password: string // 加密时需要,解密时不需要

token: string // 加密时不需要,解密时是必须的,

disableBackup: boolean // 是否允许用户使用缩退方案,即当指纹验证有问题时是否提供用户密码等方式验证的按钮;

maxAttempts:number // 最大重试次数,默认为5次,可以比5小

locale: string // 对话框的语言,默认是英文en_US

userAuthRequired: boolean

encryptNoAuth: boolean

dialogTitle: string // 对话框标题

dialogMessage: string // 对话框的提示文字

dialogHint: string // 对话框的指纹图标显示的文字

}

function encryptSuccessCallback(result) {

// result = {

// withFingerprint:boolean, // 使用指纹验证的.

// withBackup:boolean, // 使用缩退方案验证的.

// token:boolean // 验证成功获得的token.

// }

}

FingerprintAuth.decrypt(decryptConfig, encryptSuccessCallback, encryptErrorCallback)

encryptConfig 参数在encrypt中已经描述,token是必须的

function encryptSuccessCallback(result) {

// result = {

// withFingerprint:boolean, // 使用指纹验证的.

// withBackup:boolean, // 使用缩退方案验证的.

// password:boolean // 验证成功,解密得到password

// }

FingerprintAuth.delete(config, successCallback, errorCallback)

FingerprintAuth.dismiss(successCallback, errorCallback)

FingerprintAuth.ERRORS JSON Object

2: cordova-plugin-touch-id

https://github.com/EddyVerbruggen/cordova-plugin-touch-id

cordova plugin add cordova-plugin-touch-id

安装后,在使用 window.plugins.touchid 访问插件

ios插件提供了指纹验证的功能,不提供上边android插件里加解密凭证的能力;

插件支持iphoneX(有人脸,没指纹);

isAvailable函数的successCallback中可以获得检测到验证类型:iphoneX得到是‘face’, 其他是‘touch’,可以在初始化时执行该函数,检证使用的什么验证,进而给用户显示合适的文字等;

// 初始化

window.plugins.touchid.isAvailable(

function(type) {

alert(type)

}, // type returned to success callback: ‘face‘ on iPhone X, ‘touch‘ on other devices

function(msg) {

alert(‘not available, message: ‘ + msg)

} // error handler: no TouchID available

);

// 指纹(人脸)验证,指纹验证识别可以提供缩退策略的按钮,使用passcode(解锁密码)验证

window.plugins.touchid.verifyFingerprint(

‘Scan your fingerprint please‘, // this will be shown in the native scanner popup

function(msg) {

alert(‘ok: ‘ + msg)

}, // success handler: fingerprint accepted

function(msg) {

alert(‘not ok: ‘ + JSON.stringify(msg))

} // error handler with errorcode and localised reason

);

// 指纹验证失败是,对话框中提供用户使用“password”进行登录的按钮,用户点击后会在errorCallback中收到error code 为-2,我们可以利用该信息弹出我们自己的密码输入框;

window.plugins.touchid.verifyFingerprintWithCustomPasswordFallback(

‘Scan your fingerprint please‘, // this will be shown in the native scanner popup

function(msg) {

alert(‘ok: ‘ + msg)

}, // success handler: fingerprint accepted

function(msg) {

alert(‘not ok: ‘ + JSON.stringify(msg))

} // error                 handler with errorcode and localised reason

);

// 功能类似上边的方法,多了一个case: “password”的按钮文字我们可以定制

window.plugins.touchid.verifyFingerprintWithCustomPasswordFallbackAndEnterPasswordLabel(

‘Scan your fingerprint please‘, // this will be shown in the native scanner popup

‘Enter PIN‘, // this will become the ‘Enter password‘ button label

function(msg) {

alert(‘ok: ‘ + msg)

}, // success                 handler: fingerprint accepted

function(msg) {

alert(‘not ok: ‘ + JSON.stringify(msg))

} // error handler with errorcode and localised reason

);

原文地址:https://www.cnblogs.com/petunsecn/p/10419700.html

时间: 2024-07-30 15:32:41

cordova 指纹验证登录的相关文章

微信小程序 使用HMACSHA1和md5为登陆注册报文添加指纹验证签名

对接口请求报文作指纹验证签名相信在开发中经常碰到, 这次在与java后端一起开发小程序时,就碰到需求对登陆注册请求报文添加指纹验证签名来防止信息被修改 先来看下我们与后端定制签名规则 2.4. 签名规则 原文规则:采用标准的JSON格式,null值字段舍去,按照key值字符串升序排列 例如:{"appId":"1100310061380986","outTradeNo":"1515120685073","timest

$.ajax()验证登录

小提醒,在jquery的ajax函数中,可以传入3种类型的数据 1.文本:"uname=alice&mobileIpt=110&birthday=1983-05-12" 2.json对象:{uanme:'vic',mobileIpt:'110',birthday:'2013-11-11'} 3.json数组: [ {"name":"uname","value":"alice"}, {&quo

本地JAVA开发页面使用AAD验证登录

我们前一篇文章介绍了本地使用APS.NET开发的WEB服务如何使用AZURE AD(AAD)验证登录,今天我们主要介绍本地使用JAVA开发的WEB服务如何使用AAD验证登录.其实方法跟ASP.NET是一样的,需要在AZURE中注册服务才可以,然后得到对应Client ID .Security ID.URL等信息.具体见下: 我们首先将代码整理,然后使用Eclipse打开即可,需要注意的是,我们建议使用Eclipse打开的时候使用Maven方式,这样打开的话会自动下载对应的jar包.很是方便. 我

修改SQLServer中sa验证登录方法

转载请注明出自朱朱家园http://blog.csdn.net/zhgl7688 修改SQLServer中sa验证登录方法: 1.  在开始菜单中找到SQLServer Management Studio,双击打开,采用Windows身份验证进入. 2.  选中"服务器名称",点击右键,选择"属性",打开服务器属性窗口. 3.  在打开的窗口中左侧列表中找到"安全性"并选中,在窗口右侧出现的服务器身份验证中选中"SQL Server和W

一步一步实现FormsAuthentic验证登录

本文不讲原理,只讲用法,原理性的东西网上特别多,不过还是会对一些要用到的东西进行解释,不深入讲原理.本文中用的是Vs2012   .net mvc 4.0. 说下登录的整个流程:用户输入账号密码->点击提交->数据提交到后台控制器->去数据库取得用户资料->如果登录成功->将数据写入cookie(也就是写入forms身份验证)->返回给控制器登录状态->对相应的登录状态进行处理. 第一步:新建一个.net mvc 4.0的解决方案,然后配置 WebConfig文件

OpenVPN 秘钥+用户名密码双重验证登录

为什么需要用户名密码验证登录 我们已经使用了CA证书.迪菲赫尔曼交换密钥.TLS-auth密钥这几种方式进行加密了, 可以说已经很安全了,为什么还要需要用户名秘密呢,一个VPN而已,搞得这么安全有什么用呢. 首先安全还是很重要的,其次就是管理这些秘钥和证书还是比较麻烦的,因为用户量比较多. 我不可能为每个用户都创建一套加密吧,每个用户创建一个秘钥比较麻烦, 多人使用一个秘钥又不具有唯一性,比如说有用户不在需要VPN的时候,我们就只能吊销证书. 但是如果多人使用一个秘钥的情况下,吊销证书了,其他的

怎么用PHP+sqlite3验证登录用户名和密码

Session:在计算机中,尤其是在网络应用中,称为"会话控制".Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去.当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象.当会话过期或被放弃后,服务器将终止该会话. 实例 PHP创建sqlite数据库 创建一个MyDB类并继承SQLite3

linux 密钥验证登录

centos 6.5 使用密钥验证登录,是修改ssh配置文件的.ssh服务相关的配置文件都保存在目录 /etc/ssh 中,其中sshd_config 是ssh服务的配置文件,ssh_config是客户机的配置文件,我们是在winodows下使用ssh工具来连接登录.所以不需要配置ssh_config.只需要配置sshd_config即可. 首先编辑sshd_config文件,把下面3行的注释打开: [[email protected] cong]# vim /etc/ssh/sshd_conf

一个验证登录的程序:python编写flask架构restful风格--2017年4月6日

一个验证登录的程序 摘抄自:极客学院-Python RESTful API开发工具介绍及应用   http://www.jikexueyuan.com/course/623.html import base64 import time import random from flask import Flask,request app = Flask(__name__) users = { "magigo": ["123456"] } def gen_token(ui