微信小程序教程
7.12.16 生物认证
阅读(

微信小程序介绍

微信小程序设计指南

微信小程序开发简介

微信小程序开发框架

微信小程序框架视图层

微信小程序框架组件

微信小程序框架 API

概述

网络

媒体

操作文件

本地存储

位置

设备

界面

Canvas绘图

WXML节点信息

第三方平台

开放接口

获取发票抬头

打开小程序

微信运动

设置

卡券

收货地址

获取二维码

转发

客服消息

模板信息

微信支付

授权

用户信息

授权

登录

生物认证

wx.checkIsSupportSoterAuthentication(OBJECT)

wx.checkIsSupportSoterAuthentication(OBJECT)方法获取本机支持的 SOTER 生物认证方式。

基础库 1.5.0 开始支持,低版本需做兼容处理

Object参数说明:

参数 类型 必填 说明
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明:

参数名 类型 说明
supportMode StringArray 该设备支持的可被SOTER识别的生物识别方式
errMsg String 接口调用结果

supportMode 有效值:

说明
fingerPrint 指纹识别
facial 人脸识别(暂未支持)
speech 声纹识别(暂未支持)

示例代码:

wx.checkIsSupportSoterAuthentication({
    success(res) {
        // res.supportMode = [] 不具备任何被SOTER支持的生物识别方式
        // res.supportMode = ['fingerPrint'] 只支持指纹识别
        // res.supportMode = ['fingerPrint', 'facial'] 支持指纹识别和人脸识别
    }
})

wx.startSoterAuthentication(OBJECT)

wx.startSoterAuthentication(OBJECT)方法开始 SOTER 生物认证。

基础库 1.5.0 开始支持,低版本需做兼容处理

Object参数说明:

参数 类型 必填 说明
requestAuthModes StringArray 请求使用的可接受的生物认证方式
challenge String 挑战因子。挑战因子为调用者为此次生物鉴权准备的用于签名的字符串关键是别信息,将作为result_json的一部分,供调用者识别本次请求。例如:如果场景为请求用户对某订单进行授权确认,则可以将订单号填入此参数。
authContent String 验证描述,即识别过程中显示在界面上的对话框提示内容
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明:

参数名 类型 说明
errCode Number 错误码
authMode String 生物认证方式
resultJSON String 在设备安全区域(TEE)内获得的本机安全信息(如TEE名称版本号等以及防重放参数)以及本次认证信息(仅Android支持,本次认证的指纹ID)(仅Android支持,本次认证的指纹ID)
resultJSONSignature String 用SOTER安全密钥对result_json的签名(SHA256withRSA/PSS, saltlen=20)
errMsg String 接口调用结果

生物识别方式定义:

mode 说明
fingerPrint 指纹识别
facial 人脸识别(暂未支持)
speech 声纹识别(暂未支持)

resultJSON 说明:

此数据为设备TEE中,将传入的challenge和TEE内其他安全信息组成的数据进行组装而来的JSON,对下述字段的解释如表2。例子如下:

{
    "raw":"msg",
    "fid":"2",
    "counter":123,
    "tee_n":"TEE Name",
    "tee_v":"TEE Version",
    "fp_n":"Fingerprint Sensor Name",
    "fp_v":"Fingerprint Sensor Version",
    "cpu_id":"CPU Id",
    "uid":"21"
}
字段名 说明
raw 调用者传入的challenge
fid (仅Android支持)本次生物识别认证的生物信息编号(如指纹识别则是指纹信息在本设备内部编号)
counter 防重放特征参数
tee_n TEE名称(如高通或者trustonic等)
tee_v TEE版本号
fp_n 指纹以及相关逻辑模块提供商(如FPC等)
fp_v 指纹以及相关模块版本号
cpu_id 机器唯一识别ID
uid 概念同Android系统定义uid,即应用程序编号

示例代码:

wx.startSoterAuthentication({
  requestAuthModes: ['fingerPrint'],
  challenge: '123456',
  authContent: '请用指纹解锁',
  success(res) {
  }
})
1. 调用流程

2. 流程步骤说明

1)本次请求使用的生物识别方式。例如:如果本次请求使用指纹识别,则填入 ["fingerPrint"] ;

2)挑战因子为调用者为此次生物鉴权准备的用于签名的字符串关键识别信息,将作为 resultJSON 的一部分,供调用者识别本次请求。例如:如果场景为支付则可以将订单号填入此参数;

3)此数据为设备 TEE 中,将传入的 challenge 和 TEE 内其他安全信息组成的数据进行组装而来的JSON,例子及对例子中字段的解释如下:

{ "raw":"msg", "fid":"2", "counter":123, "tee_n":"TEE Name", "tee_v":"TEE Version", "fp_n":"Fingerprint Sensor Name", "fp_v":"Fingerprint Sensor Version","uid":"21"}
字段名 含义
raw 调用者传入的challenge
fid (仅Android支持)本次生物识别认证的生物信息编号(如指纹识别则是指纹信息在本设备内部编号)
counter 防重放特征参数
tee_n TEE名称(如高通或者trustonic等)
tee_v TEE版本号
fp_n 指纹以及相关逻辑模块提供商(如FPC等)
fp_v 指纹以及相关模块版本号
cpu_id 机器唯一识别ID
uid 概念同Android系统定义uid,即应用程序编号

4)此处使用 SHA256withRSA/PSS 作为签名算法进行验签。此公式数学定义如下: bool 验签结果=verify(用于签名的原串,签名串,验证签名的公钥)

5) 此步骤为建议流程,如果业务不需要等待可以不执行

6)微信已经提供后台接口,用于可信的密钥验签服务,微信将保证该接口返回的验签结果的正确性与可靠性,并且对于 Android root 情况下该接口具有上述特征(将返回是否保证root情况安全性)。

接口地址:

http://api.weixin.qq.com/cgi-bin/soter/verify_signature?access_token=%access_token

post 数据内容(JSON 编码):

{"openid":"$openid", "json_string" : "$json", "json_signature" : "$sign" }

wx.checkIsSoterEnrolledInDevice(OBJECT)

wx.checkIsSoterEnrolledInDevice(OBJECT)获取设备内是否录入如指纹等生物信息的接口。

基础库 1.6.0 开始支持,低版本需做兼容处理

获取设备内是否录入如指纹等生物信息的接口

Object参数说明:

参数 类型 必填 说明
checkAuthMode String 认证方式
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明:

参数名 类型 说明
isEnrolled Boolean 是否已录入信息
errMsg String 接口调用结果

checkAuthMode 有效值:

说明
fingerPrint 指纹识别
facial 人脸识别(暂未支持)
speech 声纹识别(暂未支持)

示例代码:

wx.checkIsSoterEnrolledInDevice({
    checkAuthMode: 'fingerPrint',
    success(res) {
        console.log(res.isEnrolled)
    }
})

如果本教程对您帮助很大,请随意打赏。您的支持,将鼓励我们提供更好的教程!

← 键盘方向键翻页 →
返回顶部 手机访问 关注微信 返回底部

扫码访问歪脖网

随时随地,想看就看

关注歪脖网微信

分享 web 知识、交流 web 经验