一、能力背景
近年来,国家在医疗挂号、APP注册、快递收寄、客运、运营商等多领域规定,需要用户实名才可办理业务,预计后续也会有越来越多的此类法规。因此,微信参照公安部“互联网+”可信身份认证服务平台标准,依托腾讯公司及微信的生物识别技术,建立微信“实名实人信息校验能力” ,即通过人脸识别+权威源比对,校验用户实名信息和本人操作(简称微信人脸核身)。
目前接口限定主体及行业类目开放公测,提供给资质符合要求的业务方,在合适的业务场景内使用。目前仅支持持二代身份证的大陆居民。
由于人脸核身功能涉及到用户的敏感、隐私信息,因此调用此接口的小程序,需要满足一定的条件。即:小程序的主体以及类目,需要在限定的类目范围内,且与小程序的业务场景一致。开展的业务也需要是国家相关法规、政策规定的需要“实名办理”的相关业务(其他未在范围内的业务,则暂不支持)。
以下为接口接入及开发的详细内容。如开发中遇到任何疑问,可以点击此处通过社区反馈,将有工作人员跟进回复。
文档第四部分【再次获取核验结果api】,有助于提高业务方安全性,请务必接入!
现阶段微信人脸核验能力,针对小程序,开放的主体类目范围包含:
如对以上类目或资质有疑问,可点击参考小程序“非个人主体开放的服务类目”,详细了解小程序开放的服务类目及对应资质。
二、准备接入 (请在小程序发布后,再提交人脸核身接口申请)
满足第一节中描述的类目和主体的小程序,可申请微信人脸核验接口。目前微信人脸核身接口已改为线上自助申请方式,需按照如下图例指引,进行接口申请:
第一步:请通过mp.weixin.qq.com登录小程序账号在后台“功能-人脸核身”的路径,点击开通按钮——
第二步:仔细查阅《人脸识别身份信息验证服务条款》后,点击“同意并下一步”——
第三步:请正确填写服务信息,并上传该小程序类目下所要求的资质——
第四步:请按照业务实际需求填写使用人脸接口的场景和用途——
第五步:请完善测试信息和联系人——
第六步:提交后请耐心等待1-3个工作日的审核期,审核结果将以站内信通知——
如申请期间遇到问题,可联系腾讯工作邮箱 wx_city@tencent.com,将会有相关工作人员进一步指引。
三、接口文档:
(一)接口描述
名称: wx.startFacialRecognitionVerify(OBJECT)
功能:请求进行基于生物识别的人脸核身
验证方式:在线验证
兼容版本:
一闪:android?微信7.0.22以上版本,?iOS?微信7.0.18以上版本
建议在微信官网升级至最新版本
(二)参数说明
1、OBJECT参数说明:
2、CALLBACK返回参数
注 1:传递用户姓名和身份证有两种方式
- 业务方没有用户实名信息,用户需要在前端填写身份证和姓名,那么前端直接通过jsapi 调用传递 name 和 idCardNumber。
- 业务方已经有用户实名信息,后台通过微信提供的 api(详情见文档后面“上传姓名身份证后台 api”)上传用户身份证姓名和身份证,api 返回 user_id_key 作为凭证传给前端,前端再调用 jsapi,用户姓名、身份证信息不需要经过前端,参数只需要传递 userIdKey。Tips:使用该功能需要小程序基础库版本号>=1.9.3。
3、回调结果说明
回调结果请参考以下释义:
4、示例代码
(三)上传用户姓名身份证的后台api
1、API说明
1.1说明
业务方上传用户姓名和身份证,获取用户凭证,把凭证给到前端通过 jsapi 调用。
Tips :使用该功能需要小程序基础库版本号>=1.9.3。
1.2请求URL
https://api.weixin.qq.com/cityservice/face/identify/getuseridkey?access_token={ac cess_token}
1.3请求方式
POST
2、请求数据格式
请求示例
参数说明
3、返回数据
4、后台消息推送
如果业务方传入out_seq_no,核身完成后会通过消息推送回调给业务方的服务器,如果回调业务方失败,会在5s尽力推送,超过5s不再推送。
参数说明
返回示例
四、再次获取核验结果api
此接口是前端完成人脸核身后,基于前端返回的凭据,通过后台api再次进行核验结果和身份信息的校验,有助于提高安全性,请务必接入!
前端获取结果不可信,存在被篡改的风险,为了保障请求结果安全性,请务必对identify_ret、id_card_number_md5、name_utf8_md5字段进行校验!
(一)API说明
1、说明
人脸核身之后,开发者可以根据jsapi返回的verify_result向后台拉取当次认证的结果信息。
2、请求URL
https://api.weixin.qq.com/cityservice/face/identify/getinfo?access_token={access_token}
3、请求方式
POST
4、请求格式
json
(二)请求数据说明
1、请求
2、数据返回 HTTP 头如下
Date: Mon, 06 Feb 2017 08:12:58 GMT
Content-Type: application/json; encoding=utf-8
Content-Length: 85
Connection: close
json示例
(三)返回参数说明
1、返回参数
注:errcode和identify_ret同时为0,代表本次认证成功。
2、错误码对应信息
五、小程序辅助接口:检查设备是否支持人脸检测
1、接口名称
接 口 :wx.checkIsSupportFacialRecognition(OBJECT)
功能:检查设备是否支持人脸检测
2、接口说明和使用
小程序调用该接口,可以检测当前手机设备是否具备支持人脸检测的能力,可与以上接口分开使用,为了用户体验,建议调用后对手机设备不支持的用户做对应功能处理。
3、接口说明和使用
01 OBJECT 参数说明:
表 2:checkAliveType 的值和对应的解释:
02 CALLBACK 返回参数
03 回调结果说明
回调结果说明仅对Android生效,iOS不返回errcode。
04 示例代码
六、安全性说明
为保障业务可用性以及安全性,请详细研读微信人脸核身接口相关基础说明及安全说明文档:https://docs.qq.com/doc/DTFB0YWFIdGV6amly
备注:如开发中遇到任何疑问,可以点击此处通过社区反馈,将有工作人员跟进回复。
七、案例展示及补充说明
安徽医科大学第二附属医院,微信人脸核验登录:
安徽医科大学第二附属医院,是三级甲等综合医院。其小程序为用户提供挂号、门诊费用、住院费用、检查报告、体检等医疗服务,同时也提供停车、餐饮等便民服务,是医疗小程序中完整的案例。
小程序使用了微信人脸核验能力作为登录的核验。满足医院管理要求,也满足国家对于实名就医的管理规则。
案例实现的截图效果如下:
针对近期少数小程序方面反馈的两类问题,也在本课程进行补充说明。
1、本接口的开放范围,即:可支持的主体类目,是否可以扩大?
说明:基于本接口整体使用范围的评估、相关法规的参考、监管策略的理解执行等,暂时未立刻进行扩大开放范围的工作。
但我们会持续基于不同行业的法规、政策及监管要求等,逐一进行研究考量,以便确认如何扩大开放范围。
2、小程序如果涉及用户本人的生物特征采集,(如本人人脸照片、人脸视频),或涉及采集用户本人生物特征信息并开展人脸核验功能,则存在被驳回的情况?
说明:近两年“人脸识别”技术在社会上掀起了热潮。人脸识别虽然作为摆脱“中间媒介”或“承载载体”的一种直接技术手段,解决了部分政务、交通、医疗、零售等证明“操作者是本人”的问题,但也因此,引入了新的更大的安全风险。
一是,虚假安全风险。
身份认证领域的安全三因素包括“我知道什么”、“我拥有什么”、“我的特征是什么”,通用的安全做法,是要双因素认证(2FA),人脸识别技术如仅凭“我的特征是什么”这一个因素,则容易被攻破或利用。表象给用户以安全的感觉,但实际并不能达到安全效果。
二是,信息泄漏的风险。
越来越多的组织或个人,在并非必需用户敏感信息、生物特征的情况下,采集并存储此类信息。在信息加密、传输、存储过程中,容易暴漏更多的网络节点,使得此类信息有更大的风险被网络黑客拦截、窃听、窃取,或直接被脱库。
三是,消除风险的难度大。
以往基于“中间媒介”或“承载载体”的方式,如出现丢失、被冒用、恶意盗用等风险,可以通过挂失、更换、使用新载体或新媒介等方式,快速排除一定的风险。C端主动,B端主动,都能解决一部分问题。但人脸识别做为更直接的方式,一旦出现冒用、盗用,受害者将面临更大的财产及人生安全风险,且C端用户更多时候无法主动消除风险。
基于以上问题风险,加之国家出台《网络安全法》、《用户隐私保护条例》等法律法规标准,网信办、公安部、工信部及市场监管总局等四部委发起的app获取隐私整治,结合平台安全、用户敏感隐私信息保护要求及监管,针对部分暂无相关法规或要求,需要采集或生物认证方式进行身份核验的,或以“追热点”或“尝鲜”为目的,采集用户生物特征或进行身份核验的,进行严格审核,必要时不予以支持。