demo地址
https://gitee.com/eshunda/h5-demo
-
产品简介
什么是【端云结合】H5人脸核身
【端云结合】H5人脸核身 产品基于计算机视觉、大数据分析和人工智能技术,配合权威数据源验证,可快速校验自然人的真实身份。产品内置活体检测功能,能够有效防御多种呈现式攻击及注入式攻击,为用户和机构提供安全又便捷的人脸识别和活体检测服务。
在接入方式上,产品采用高效便捷的设计,仅需向用户提供一个认证 URL,即可完成人脸核身流程。
什么是端云结合模式
端云结合模式需要在客户的App或网页中集成活体检测SDK,用户在客户端完成刷脸,并将采集到的人脸图片加密送到服务端完成活体检测和权威数据源验证,然后向客户返回认证结果以及采集的最佳人脸图片。
-
通过活体检测判断人脸图像是否为真实人脸,可有效抵御照片修改、面具、遮挡以及屏幕翻拍等常见的攻击手段。
-
支持多种活体检测模式,包括多动作活体检测、炫彩活体检测等。
-
支持对活体检测模式进行灵活组合,例如指定多动作活体+炫彩活体的联合检测方式,同时多动作活体中支持自定义动作、个数、顺序。
产品优势
安全等级高
-
全链路加密:敏感信息加密传输,动态口令一图一密。
-
全链路风险策略对抗:风险决策引擎对用户设备、运行环境和用户操作行为等特征进行实时监控,及时发现异常情况有效防御恶意操作行为,保障高安全水位。
-
创新的炫彩检测、动作检测、静默检测等活体检测方法,有效抵御多种攻击手段。
算法性能强
-
活体检测算法,速度快、体验好、通过率高。
-
人脸识别算法,准确率高、速度快,在比对万分之一阈值下通过率大于99%。
灵活易用
-
可根据客户实际业务需求,快速对解决方案进行定制化开发,满足客户需求。
-
接入方式全覆盖,支持 Android、IOS、鸿蒙、微信小程序、微信 H5、PC等主流客户端。
-
服务端兼容多种平台,支持本地化部署,兼容主流 Linux 操作系统和国产信创系统;
应用场景
活体检测产品的主要应用场景如下
远程身份认证
在银行远程开户、保险理赔、转账交易、在线开户、电子政务、交通出行等环节,通过移动端采集人脸信息,判断是否为活体并结合人脸比对产品或权威信息源判断是否是本人,保证交易安全和账户安全,提升远程业务办理效率。
人脸图像采集与检测
在银行、政务等场景中,使用移动端采集用户人脸图像进行留底,并且可以结合产品中的多人脸检测、闭眼检测等能力检查采集的图像是否满足要求,为用户提供人脸采集解决方案。
产品效果图
-
产品使用介绍
接入准备
购买H5人脸核身产品套餐包(免费试用20次),购买地址。
计费方式
接口名 | 是否计费 | 计费说明 |
发起认证请求 | 计费 | 响应报文 code 字段返回 200 时计一次费。 |
查询认证结果 | 不计费 | - |
说明:
成功执行一次人脸核身,并获取到认证结果,计一次费。
人脸核身异常、用户不执行人脸核身、用户中断人脸核身流程不计费。
认证流程
整体交互流程
暂时无法在飞书文档外展示此内容
阶段一
-
用户端业务触发核验流程。
-
应用方页面 发送请求到 应用方服务器,告知 应用方服务器 需要发起一次核验流程。
-
应用方服务器 传入相关参数调用 阿里云网关 发起认证请求 接口,获取 verifyUrl 和 orderNo.(接口文档请参见下文《服务端集成》)。
-
应用方服务器 将获取到的 orderNo 进行保存,并将 verifyUrl 下发给 应用方页面。
阶段二
-
应用方页面 跳转到 verifyUrl,打开 活体检测页面。
-
用户在 活体检测页面 上根据页面提示进行认证流程。
-
认证完成后,应用方服务器 将认证结果下发给 活体检测页面,活体检测页面 会携带签名后的认证结果请求应用方的returnUrl 地址。
-
认证完成后,应用方服务器 将 orderNo 发送给应用方的 notifyUrl 地址。(可选,notifyUrl 不为空才会发起请求)
阶段三
-
应用方服务器 传入 orderNo 调用 阿里云网关 获取认证结果 接口,获取认证结果, 根据结果进行后续业务流程。
-
服务端集成
阿里云API网关调用规则
购买API商品成功后,如何调用API,请阅读《如何使用阿里云API类商品》。
重要
使用简单认证方式时,建议通过应用方服务器和API网关通信。
因为简单认证方式免去了复杂的签名过程,但是把AppCode
作为明文暴露网络中传输,会带来一些安全隐患,请务必重视。
API 文档
发起认证请求
接口名:getVerifyUrl
全局接入地址:eshunda.market.alicloudapi.com(IPv4)
请求方法:POST
传输协议:HTTPS
Content-Type: application/x-www-form-urlencoded
接口说明:每次开始认证前通过本接口获取 orderId,用来串联认证请求中的各个接口。
请求参数
名称 | 类型 | 是否必选 | 描述 | 示例值 |
bizId | String | 是 | 客户服务端自定义的业务唯一标识,用于后续定位排查问题使用。值最长为32位长度的字母数字组合,请确保唯一。 | dl747f5a11c40a5aa5e6ed |
livingType | String | 是 | 活体检测类型 1:远近 2:眨眼 3:摇头 4:点头 5:张嘴 6: 炫彩 | 26:眨眼检测+炫彩检测最多支持4种活体方式组合 推荐使用眨眼检测+炫彩检测。 |
certNo | String | 是 | 身份证号,仅支持中国大陆身份 | |
certName | String | 是 | 姓名,仅支持中国大陆身份 | |
returnUrl | String | 是 | 客户业务页面回跳的目标地址。 认证完成后会携带认证结果,重定向页面到该地址。(前端方式回调) | 支持多种推送方式,请阅读下文《returnUrl推送规则》 |
notifyUrl | String | 否 | 认证结果的回调通知地址。 平台在认证完成后会携带认证结果通过POST表单形式回调该地址。(后端方式回调) 重要 1.仅当认证完成时才会触发回调,若用户在刷脸页面认证中放弃、异常中断或未进行认证均不会通知。 2.建议您收到回调通知时,若有需要可通过查询接口获取认证详情信息。 3.该值的传入会在调用接口前做可访问校验,如果传入的地址不能在公网访问,不会发送请求。 4.接口在回调后务必返回 HTTP 状态码 200,否则会触发重试,3秒内两次回调。 | 请阅读下文《notifyUrl推送规则》 |
返回数据
名称 | 类型 | 描述 | 示例值 |
code | String | 返回码:200 为成功,其他为失败。 | 200 |
msg | String | 请求参数的响应信息。 | 成功 |
logId | String | 日志Id | dl747f5a11c40a5aa***** |
data.orderNo | String | 订单唯一标识。 重要 orderNo字段为计费统计字段,为了方便后续核对账单,请您在本地留存该字段信息。 初始化接口返回的认证orderNo在60分钟有效且仅能认证提交一次,请您在有效期内应用,避免重复使用。 | 202505271116193330KFGGaBmHh9uY5i |
data.verifyUrl | String | Web浏览器进行实人认证的URL,认证结束后根据入参ReturnUrl进行跳转。 警告 verifyUrl在60分钟有效且仅能认证提交一次,请您在有效期内使用,避免重复使用。 | 略 |
出参示例
{
"msg": "success",
"code": "200",
"data": {
"orderNo": "202505271116193330KFGGaBmHh9uY5i",
"verifyUrl": "https://face.eshunda.cn/rpverify/public/h5/verify/202505271116193330KFGGaBmHh9uY5i"
}
}
返回code和msg说明
code | msg | 描述 |
200 | success | 成功。 |
400 | 参数不能为空 | 参数不能为空。 |
401 | 非法参数 | 非法参数。传入的姓名、身份证号码长度必须符合国家标准且不得包含英文字母等特殊字符。 |
412 | 欠费中 | 产品欠费中,请充值后操作。 |
414 | 设备类型不支持 | 当前移动设备不支持刷脸认证,请更换设备后操作。 |
415 | SDK版本不支持 | 当前认证SDK版本不支持刷脸认证,请升级SDK后操作。 |
416 | 系统版本不支持 | 当前操作系统版本不支持刷脸认证,请升级系统或更换设备操作。 |
500 | 系统错误 | 系统内部错误,请反馈工程师排查。 |
查询认证结果
接口名:getResult
全局接入地址:eshunda.market.alicloudapi.com(IPv4)
请求方法:POST
传输协议:HTTPS
Content-Type: application/x-www-form-urlencoded
接口说明:当您收到回调通知之后,可以在服务端通过该接口获取认证结果。
请求参数
名称 | 类型 | 是否必选 | 描述 | 示例值 |
orderNo | String | 是 | 订单唯一标识。(由发起认证请求接口返回。) | 202505271116193330KFGGaBmHh9uY5i |
返回数据
名称 | 类型 | 描述 | 示例值 |
code | String | 返回码:200 为成功,其他为失败。 | 200 |
msg | String | 请求参数的响应信息。 | 成功 |
logId | String | 日志Id | dl747f5a11c40a5aa***** |
data.passed | String | 认证结果 取值:T:通过 F:未通过 说明 判断认证结果以该字段为准。 | T |
data.resultCode | String | 认证结果描述。 您可以在resultCode说明中查看不同状态码的描述和处理建议。。 | 200 |
data.bestImgUrl | String | 活体检测采集的人脸照片oss下载链接,有效期12小时。 | 略 |
data.certName | String | 姓名 | 略 |
data.certNo | String | 身份证号 | 略 |
返回code和msg说明
code | msg | 描述 |
200 | success | 成功。 |
400 | 参数不能为空 | 参数不能为空。 |
401 | 非法参数 | 非法参数。传入的姓名、身份证号码长度必须符合国家标准且不得包含英文字母等特殊字符。 |
412 | 欠费中 | 产品欠费中,请充值后操作。 |
414 | 设备类型不支持 | 当前移动设备不支持刷脸认证,请更换设备后操作。 |
415 | SDK版本不支持 | 当前认证SDK版本不支持刷脸认证,请升级SDK后操作。 |
416 | 系统版本不支持 | 当前操作系统版本不支持刷脸认证,请升级系统或更换设备操作。 |
500 | 系统错误 | 系统内部错误,请反馈工程师排查。 |
说明:
响应报文 code 字段返回 200 时计一次费。
resultCode说明
code | msg | 描述 |
200 | 认证通过 | 调用成功。 |
201 | 活体检测不通过 | 实人认证产品,活体检测不通过时会返回此状态码。 |
202 | 姓名、身份证和人脸不一致 | 可能是用户的信息有误或用户的信息为假信息,建议用户确认后重操作。 |
203 | 查询不到身份信息 | 可能是用户户口迁移等特殊状态导致,建议预留人工审核入口,进行人工审核。 说明 若同一用户多次认证不通过,建议用户尝试通过CTID官方App更新留底数据后再次进行认证。 |
204 | 业务策略限制,风控系统判定该笔认证安全等级为高危风险。 | 为了保证认证的安全性,系统风险决策引擎会对认证的设备、人脸、行为等环境进行安全检测。 常见风险原因: - 该设备检测到疑似存在劫持摄像头、被Root、注入、模拟器等高风险特征。 - 该设备或身份存在一定时间内高频重复认证行为。 您可以按照如下方法排查处理: - 提醒用户卸载掉设备上可能安装的各种多开、分身、虚拟环境等软件或插件。 - 恢复设备系统初始安全环境后重试。 - 若是内部测试或已经线下人工确认正常,您可以联系客服加白处理。 |
205 | 查询不到认证结果 | 可能是用户中断了认证流程或用户未开始认证。 |
出参示例
{
"msg": "success",
"code": "200",
"data": {
"passed": "T",
"resultCode": "200",
"bestImgUrl": "略",
"certName":"略",
"certNo":"略"
}
}