前端获取结果验证签名

最近更新时间:2019-07-30 16:27:33

为了确保前端 SDK 和 H5 返回的结果真实性且未被篡改,合作伙伴服务端可以验证结果,我们提供前端获取结果验证签名服务端验证结果 两种结果验证方式,合作伙伴可以根据需求自行选择。
前端获取结果验证签名方式用于:

  1. 合作伙伴 App 端或 H5 收到远程人脸核身 SDK 返回以及签名结果。
  2. 合作伙伴 App 端或 H5 调用其服务端接口进行签名认证,接口认证成功后继续业务流程。

合作方后台生成签名

准备步骤

  • 前置条件:请合作方确保 SIGN ticket 已经正常获取,获取方式请参见 SIGN ticket 获取
  • 合作方为人脸核身服务生成签名,需要具有以下参数:
参数 说明 来源
wbappid 请添加小助手微信 faceid001,进行线下对接获取。 腾讯云线下对接分配
order_no 订单号,本次人脸核身合作伙伴上送的订单号,唯一标识 合作方自行分配
api ticket 合作伙伴服务端缓存的 tikcet,注意是 SIGN 类型 获取方式请参见 SIGN ticket 获取
code 人脸核身结果的返回码
0:人脸核身成功,其他错误码:人脸核身失败
-

基本步骤

  1. 将 app_id、order_no、ticket(SIGN 类型)、code 共4个参数的值进行字典序排序。
  2. 将排序后的所有参数字符串拼接成一个字符串。
  3. 将排序后的字符串进行 SHA1 编码,编码后的40位字符串作为签名(sign)。

注意:

签名算法可参考 签名算法说明

参考示例

  • 请求参数:
    参数名参数值
    app_idappId001
    order_notest1480921551481
    ticketduSz9ptwyW1Xn7r6gYItxz3feMdJ8Na5x7JZuoxurE7RcI5TdwCE4KT2eEeNNDoe
    code0
  • 字典排序后的参数为:
    [0,appId001, duSz9ptwyW1Xn7r6gYItxz3feMdJ8Na5x7JZuoxurE7RcI5TdwCE4KT2eEeNNDoe, test1480921551481]
  • 拼接后的字符串为:
    0appId001duSz9ptwyW1Xn7r6gYItxz3feMdJ8Na5x7JZuoxurE7RcI5TdwCE4KT2eEeNNDoetest1480921551481
  • 计算 SHA1 得到签名:
    该字符串就是最终生成的签名(40位),不区分大小写。
    526365E042766AE27A6E52D2E4829D4C6E156B5D

比对签名

合作方服务端生成的签名与 SDK 返回的签名比对,如果相同即可信任 SDK 的人脸核身结果。

注意:

合作方必须定时刷新 ticket(SIGN) 保证远程身份认证后台缓存有该合作方的 ticket(SIGN),否则远程身份认证后台无法生成签名值。