何时显示该步骤
当以下两个条件均满足时,会话将展示同意步骤:- 工作流采集了人脸。 活体检测、人脸比对或年龄估算步骤、身份证件验证步骤拍摄的前置摄像头自拍照(除非您已将其关闭),或全会话视频录制。
- 应用的同意模式要求显示该步骤。 在自动模式下,适用以下任一触发器。在始终模式下,每个采集人脸的会话都会要求提供。
同意模式
在控制台中选择模式,路径为应用的 Settings > Data and privacy > Biometric consent。每次更改都会记录在审计日志中。自动模式下的步骤触发条件
Didit 按顺序检查以下规则,并在biometric_consent.trigger 中记录首个适用的规则:
VPN、代理和托管网络本身不会直接触发要求。 Didit 像定位其他 IP 一样定位用户的 IP:位于伊利诺伊州、德克萨斯州或科罗拉多州的 IP 会显示该步骤,其他任何地方的 IP 则不会。仅在有受管辖州的明确凭证(IP、签发身份证件的州或您声明的州)时,或者当用户位于美国但没有具体州(
ip_unknown)时,才会要求执行该步骤。如果受管辖州的用户使用了出口在其他地方的 VPN,且身份证件并非由受管辖州签发,则不会要求该步骤;如果您需要覆盖这种情况,请使用始终模式,或发送 user_state。
还有两个值描述了会话同意是如何确定的,而不是为何要求的:
向 Didit 提供已知信息
创建会话为此提供了两个可选字段:哪些应用会显示该步骤
该步骤需要由能够显示它的应用来呈现。Didit 会在应用发出的每次请求中做出判断:4.10.0 以下版本的原生 SDK
4.10.0 之前发布的原生 SDK 无法识别同意步骤,因此 Didit 不会向它们请求该步骤。验证过程将与之前完全一致:自拍照和其他人脸捕获均会被接收并处理,会话照常得出决策。 Didit 从不记录未获得的同意。当会话需要同意且旧版 SDK 捕获了人脸时,决策将显示:reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK",因为此前已在没有同意的情况下捕获了人脸。
用户看到的内容
该步骤会告知用户收集的内容、原因、持有方以及保留时长,并链接至生物识别数据政策。页面仅有一个按钮:我同意并继续,在用户勾选同意框之前该按钮保持禁用状态。 Didit 会保存用户的选择作为凭证:给出同意的时间、所展示文本的版本与哈希值、语言、工作流步骤,以及请求的 IP、地理位置和用户代理。用户一旦同意,该选择即为最终结果。当用户不同意时
该步骤没有拒绝按钮。不愿意同意的用户会离开流程:系统不会捕获任何面部信息,且该会话将与任何其他用户未完成的会话一样以Abandoned 结束(参见验证状态)。请为他们提供其他验证方式。
API 中的拒绝同意状态
决策中保留了declined 状态和 BIOMETRIC_CONSENT_DECLINED 原因作为 API 取值。目前 Didit 界面均未提供拒绝选项,因此托管流程和原生 SDK 均不会记录拒绝。记录了拒绝的会话:
- 以
Declined结束,并像任何其他拒绝情况一样触发status.updatedWebhook。 - 显示
biometric_consent.status为declined,reason和decline_reason为BIOMETRIC_CONSENT_DECLINED,并在declined_at中记录时间。 - 拒绝后不再捕获人脸。会话中已保存的每张人脸图像和生物特征模板均会被删除:自拍照、证件拍摄时的前置摄像头自拍照、证件肖像的人脸裁剪图、活体检测视频和完整会话视频。
face_data_deleted_at会记录删除时间。决策中将不再返回这些数据,且删除是不可逆的。 - 保留证件图像以及从中读取的数据:拒绝操作不会对其产生影响。
决策和 Webhook 中的体现
在获取会话中以及会话 Webhook 的decision 中,每个用户验证决策均包含一个 biometric_consent 对象。若会话从未经过评估(例如没有进行人脸捕获的工作流),该对象为 null。
用户在托管流程中表示同意的会话: