微信小程序 SOTER 生物认证DEMO 指纹识别功能

微信小程序 SOTER 生物认证DEMO 指纹识别功能攻略

简介

微信小程序SOTER(Secure Object Token Express Release)是一个基于微信安全架构的生物认证框架,提供了生物认证所需要的所有流程,并满足了不同场景的需求。其中,SOTER生物认证DEMO有很多的示例代码,本文主要讲述其中的指纹识别功能。

指纹识别功能开发流程

指纹识别功能的开发主要分为以下三个步骤:

1. 开通 SOTER 生物认证

在小程序后台开通SOTER生物认证,需要提供开发者认证信息和证明材料,证明材料需要额外上传。具体的开通流程可以参考微信小程序的官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/soter.html

2. 准备指纹识别所需的参数

指纹识别需要使用wx.checkIsSupportSoterAuthentication() API 判断设备是否支持SOTER生物认证,并获取设备支持的生物认证方式;同时需要创建生物认证的挑战因子,用于发起生物认证请求。

示例代码如下:

wx.checkIsSupportSoterAuthentication({
   success(res) {
      console.log(res);
      const supportMode = res.supportMode;
      if (supportMode.length > 0) {
         wx.startSoterAuthentication({
            challenge: '123456',
            authModes: [supportMode[0]],
            success(res) {
               console.log(res);
            },
            fail(res) {
               console.log(res);
            }
         });
      }
   },
   fail(res) {
      console.log(res);
   }
});

3. 处理指纹识别的结果

当指纹识别请求成功时,会返回一个包含resultJSONresultJSONSignature的对象,其中resultJSON是经过AES-256-CBC算法加密的生物认证信息,需要后端解密;resultJSONSignature是RSA算法生成的数字签名信息,用于校验生物认证信息是否被篡改。

示例代码如下:

wx.startSoterAuthentication({
   challenge: '123456',
   authModes: [supportMode[0]],
   success(res) {
      console.log(res);
      wx.checkIsSoterEnrolledInDevice({
         checkAuthMode: supportMode[0],
         success(res) {
            console.log(res);
            if (res.isEnrolled) {
               wx.request({
                  // 解密 resultJSON,校验 resultJSONSignature
                  success(res) {
                     console.log(res);
                  },
                  fail(res) {
                     console.log(res);
                  }
               });
            }
            else {
               console.log('用户未录入相关生物认证');
            }
         },
         fail(res) {
            console.log(res);
         }
      });
   },
   fail(res) {
      console.log(res);
   }
});

示例说明

示例一:获取设备支持的生物认证方式

假设设备支持指纹和人脸两种生物识别方式,程序选择使用指纹识别。

wx.checkIsSupportSoterAuthentication({
   success(res) {
      console.log(res);
      // 获取支持模式的数组
      const supportMode = res.supportMode;
      // 判断是否支持指纹识别
      if (supportMode.indexOf('fingerPrint') >= 0) {
         wx.startSoterAuthentication({
            challenge: '123456',
            // 只使用指纹识别
            authModes: ["fingerPrint"],
            success(res) {
               console.log(res);
            },
            fail(res) {
               console.log(res);
            }
         });
      }
   },
   fail(res) {
      console.log(res);
   }
});

示例二:校验生物认证信息是否被篡改

示例代码中通过调用后端接口获取解密后的生物认证信息,并使用公钥校验RSA算法生成的数字签名信息,确保生物认证信息未被篡改。

wx.startSoterAuthentication({
   challenge: '123456',
   authModes: [supportMode[0]],
   success(res) {
      console.log(res);
      wx.checkIsSoterEnrolledInDevice({
         checkAuthMode: supportMode[0],
         success(res) {
            console.log(res);
            // 校验是否录入了相关生物认证方式
            if (res.isEnrolled) {
               wx.request({
                  // 解密 resultJSON,校验 resultJSONSignature
                  success(res) {
                     console.log(res);
                     // 解密 resultJSON
                     const plainText = wx.arrayBufferToBase64(wx.soterDecryption({
                        mode: 'AES-CBC',
                        padding: 'PKCS7',
                        data: res.data.resultJSON,
                        key: '1234567890abcdef1234567890abcdef'
                     }));
                     console.log(plainText);
                     // 校验 resultJSONSignature
                     const rsa = new JSEncrypt();
                     rsa.setPrivateKey('私钥');
                     if (rsa.verify(plainText, res.data.resultJSONSignature, CryptoJS.SHA256)) {
                        console.log('验证签名成功');
                     }
                     else {
                        console.log('验证签名失败');
                     }
                  },
                  fail(res) {
                     console.log(res);
                  }
               });
            }
            else {
               console.log('用户未录入相关生物认证');
            }
         },
         fail(res) {
            console.log(res);
         }
      });
   },
   fail(res) {
      console.log(res);
   }
});

以上就是指纹识别功能的完整攻略,希望可以对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:微信小程序 SOTER 生物认证DEMO 指纹识别功能 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • PHP三层结构(下) PHP实现AOP第1/2页

    关于“PHP三层结构(下) PHP实现AOP第1/2页”的攻略,我可以给出如下的详细讲解: PHP三层结构简介 在Web应用开发中,三层结构通常是指数据层、业务逻辑层和表示层。其中,数据层用于处理数据的读写操作,业务逻辑层用于实现业务流程和逻辑,表示层则负责呈现给用户的视图和界面。PHP作为一门流行的Web编程语言,其应用架构通常也采用三层结构。 在实际开发…

    PHP 2023年5月27日
    00
  • Laravel搭建后台登录系统步骤详解

    Laravel是一种流行的PHP框架,被广泛用于开发Web应用。本攻略将介绍如何使用Laravel框架搭建后台登录系统。 步骤1:创建Laravel应用程序 要开始使用Laravel框架,你需要在本地计算机上安装PHP和Composer。然后,使用Composer创建一个新的Laravel项目。 安装Composer后,按照以下命令创建Laravel项目: …

    PHP 2023年5月24日
    00
  • php数组函数序列之array_search()- 按元素值返回键名

    对于PHP中的数组,有很多数组函数可以帮助我们进行常用的数组操作。其中,array_search()函数是一个查找函数,可以按照指定的元素值在数组中查找对应的键名。 array_search()函数的语法 array_search()函数的基本语法如下: array_search($needle, $haystack, $strict); 说明: $need…

    PHP 2023年5月26日
    00
  • Laravel实现队列的示例代码

    下面是“Laravel实现队列的示例代码”的完整使用攻略,包括队列的基本原理、队列的配置和使用、队列的监控和管理以及两个示例说明。 队列的基本原理 队列是一种异步处理任务的技术,它可以将任务放入队列中,然后由后台进程异步处理。Laravel提供了对队列的支持,它使用PHP代码来描述任务,然后使用队列驱动程序将任务放入队列中,由后台进程异步处理。 Larave…

    PHP 2023年5月12日
    00
  • php生成用户密码的两种方式

    下面是PHP生成用户密码的两种方式的具体攻略: 方式一:使用PHP内置函数password_hash() 使用PHP内置函数password_hash()生成密码是一种比较常用的方式。password_hash()函数能够帮助我们生成安全的哈希密码,同时也自动进行加盐操作,避免了简单的hash被彩虹表破解。 代码示例 <?php $password =…

    PHP 2023年5月26日
    00
  • php按单词截取字符串的方法

    PHP 按单词截取字符串的方法,一般可以使用 explode 函数来完成。具体步骤如下: 使用 explode 函数把字符串按照空格划分成一个一个的单词,返回数组形式,代码如下: $words = explode(‘ ‘, ‘I love coding in PHP’); 再使用 implode 函数把前几个单词拼接在一起,代码如下: $newString …

    PHP 2023年5月26日
    00
  • php后台程序与Javascript的两种交互方式

    PHP后台程序和Javascript之间有两种交互方式:同步和异步。在这里,我们将为您提供完整的攻略,帮助您深入了解这两种交互方式的使用。 同步交互 同步交互是指浏览器和服务器之间的交互方式,该方式需要在同一时间内处理所有请求。在PHP中,同步交互可以使用 XMLHttpRequest 对象实现。下面是一个简单的示例: // HTML代码 <butto…

    PHP 2023年5月23日
    00
  • php动态生成版权所有信息的方法

    生成版权信息是网站开发过程中非常常见的一项任务。下面,我将为您介绍一种通过 PHP 动态生成版权所有信息的方法。具体步骤如下: 步骤一:编写版权信息模板 首先,我们需要编写一个版权信息模板,这个模板可以是简单的字符串,也可以是包含 HTML 标签的字符串。在模板中,我们可以使用 PHP 变量替换的方法来动态地生成版权信息。例如,我们可以在模板中使用 $yea…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部