在PC或移动端H5页面接入金融级实东说念主认证决策时,开拓者需要在后端处事器集成SDK白丝足交,以便调用InitFaceVerify接口得回用于浏览器进行实东说念主认证的认证联贯CertifyUrl。本文将防止先容处事端SDK的装配方式、所调接口的参数讲明以及实质调用接口示例讲明。
地域
处事地址
VPC地址
全局接入地址
华东2(上海)
IPv4:cloudauth.cn-shanghai.aliyuncs.com
cloudauth-vpc.cn-shanghai.aliyuncs.com
IPv4:cloudauth.aliyuncs.com
IPv6:cloudauth-dualstack.aliyuncs.com
IPv6:cloudauth-dualstack.aliyuncs.com
华北2(北京)
IPv4:cloudauth.cn-beijing.aliyuncs.com
cloudauth-vpc.cn-beijing.aliyuncs.com
IPv6:cloudauth-dualstack.cn-beijing.aliyuncs.com
央求步伐辅助HTTPS POST或GET方式发送央求。
SDK装配与源码下载您可根据业求实质的本领选型,采选合适的SDK谈话进行集成。
辅助谈话
Github源码地址
SDK下载地址
Java
Alibaba Cloud Green SDK for Java
下载Java SDK
Python
Alibaba Cloud Green SDK for Python
下载Python SDK
Typescript
Alibaba Cloud Green SDK for Typescript
下载TypeScript SDK
Go
Alibaba Cloud Green SDK for Go
下载Go SDK
PHP
Alibaba Cloud Green SDK for PHP
下载PHP SDK
C#
Alibaba Cloud Green SDK for C#
下载C# SDK
C++
Alibaba Cloud Green SDK for C++
下载C++ SDK
处事端需要集成的OpenAPIInitFaceVerify-发起认证央求每次运行认证前通过调用本接口得回用于浏览器进行实东说念主认证的认证联贯CertifyUrl。
央求参数称呼
类型
是否必选
姿色
示例值
SceneId
Long
是
要接入的认证场景ID。该ID在边界台创建认证场景后自动生成。对于如何创建认证场景,请参见添加认证场景。
1000000006
OuterOrderNo
String
是
您自界说的业务独一标志,用于后续定位和排查问题使用。
辅助长度为32位的字母和数字组合,请确保独一。
e0c34a77f5ac40a5aa5e6ed20c353888
ProductCode
String
是
要接入的认证决策。
独一取值:ID_PRO。细目决策讲明,请参见PC或移动端H5网页接入决策先容。
ID_PRO
Model
String
是
要进行活体检测的类型。
LIVENESS:默许,眨眼算作活体检测。
MULTI_ACTION:多算作活体检测,眨眼+纵情摇头检测(法例当场)。
MULTI_FAPTCHA:多算作活体检测,眨眼+形迹判断(法例当场)。
MOVE_ACTION:遐迩算作+眨眼算作活体检测。
MULTI_ACTION
CertType
String
是
用户证件类型。辅助的证件类型,请参见决策综合。
不同证件类型,取值均为IDENTITY_CARD。
IDENTITY_CARD
CertName
String
是
您的终局用户的真确姓名。
张三
CertNo
String
是
您的终局用户的证件号码。
330103xxxxxxxxxxxx
ReturnUrl
String
是
您的业务页面回跳的贪图地址。
https://www.aliyun.com
MetaInfo
String
是
MetaInfo环境参数。实质环境需要通过JS文献,调用函数getMetaInfo()得回,细目请参见启动刷脸。
{"zimVer":"3.0.0","appVersion": "1","bioMetaInfo": "4.1.0:1150****,0","appName": "com.aliyun.antcloudauth","deviceType": "ios","osVersion": "iOS 10.3.2","apdidToken": "","deviceModel": "iPhone9,1"}
Mobile
String
否
您终局用户的手机号码。
130xxxxxxxx
Ip
String
否
您终局用户的IP。
47.100.XX.XX
UserId
String
否
您自界说的用户ID,请保握独一。
123456789白丝足交
CallbackUrl
String
否
https://www.aliyun.com
CallbackToken
CallbackToken
否
安全Token,由您自行生成,用于防叠加、防改换校验。
要是耕种了该值,会在回调地址中浮现CallbackToken字段。
NMjvQanQgplBSaEI0sL86WnQplB
CertifyUrlType
String
否
Web SDK建筑类型。取值WEB能够H5。
WEB
CertifyUrlStyle
String
否
复返CertifyUrl类型,包括:
L:HTTPS,原始长链。
S:HTTP,短链。
L
AuthId
String
否
用户授权ID,最大长度为64位字符。
92d46b9e9e2d703f2897f350d5bd4149
EncryptType
String
否
加密类型。为空示意不加密。
如开启加密传输,需传入加密算法。现在仅辅助SM2国密算法。
如需传入加密算法,需对CertName和CertNo进行加密,并传入加密后的密文。相干参数加密的更多信息,请参见参数加密讲明。
SM2
ProcedurePriority
String
否
移动端H5方式认证出现WebRTC能够Webassembly不兼容时的左迁成立。默许值:url。
keep:不辅助左迁,径直复返。
url:辅助左迁,复返认证URL,用户使用此URL掀开能够切换浏览器进行认证。
video:辅助左迁,使用系统相机录制一段3~5秒的眨眼视频进行认证。
url
FaceGuardOutput
String
否
东说念主脸保镖标签种类。
DeviceRisk:建筑风险标签。
DeviceRisk
RarelyCharacters
String
否
是否开启冷落字模式。
Y:开启。用户认证前会弹出信息输入框,需输入冷落字姓名和身份证号码,欢跃契约后才智运行认证经过。
N:不开启(默许)。
Y
uiCustomUrl
String
否
UI成立文献URL。对于Web SDK自界说UI讲明,请参见Web SDK UI自界说成立讲明。
www.aliyundoc.com
VideoEvidence
String
否
是否开启视频存证。
true:开启
false:不开启(默许)
false
复返数据称呼
类型
姿色
示例值
RequestId
String
央求ID。
130A2C10-B9EE-4D84-88E3-5384FF039795
Message
String
复返信息。
success
Code
String
复返码:200为告捷,其他为失败。
200
ResultObject.CertifyId
String
实东说念主认证独一标志。
91707dc296d469ad38e4c5efa6a0f24b
ResultObject.CertifyUrl
String
Web浏览器进行实东说念主认证的URL,认证扫尾后根据入参ReturnUrl进行跳转。
****
复返Code和Message讲明Code
Message
姿色
200
success
告捷。
400
参数不成为空
参数不成为空。
401
参数作歹
作歹参数。传入的姓名、身份证号码长度必须合乎国度尺度且不得包含英笔墨母等相当字符。
402
愚弄成立不存在
愚弄成立不存在。
404
认证场景成立不存在
认证场景成立不存在,请先在边界台上创建认证场景。
410
未怒放处事
未怒放OSS家具或未完成OSS读写授权,请登录边界台完成授权。
411
RAM无权限
需要给RAM用户授予AliyunAntCloudAuthFullAccess的操作权限。
412
欠费中
金融级实东说念主认证或OSS存在欠费,请充值后操作。
414
建筑类型不辅助
面前移动建筑不辅助刷脸认证,请更换建筑后操作。
415
SDK版块不辅助
面前认证SDK版块不辅助刷脸认证,请升级SDK后操作。
红色av416
系统版块不辅助
面前操作系统版块不辅助刷脸认证,请升级系统或更换建筑操作。
417
无法使用刷脸处事
面前身份信息比对源不可用。若信息正确,残暴东说念主工审核。
418
刷脸失败次数过多
今日刷脸认证次数过多,请来日再试。
500
系统乖谬
系统里面乖谬,请反馈工程师进行排查。
DescribeFaceVerify-得回认证遵守当您收到回调见知之后,不错在处事端通过该接口得回相应的认证情景和认证贵府。
央求参数称呼
类型
是否必选
姿色
示例值
SceneId
Long
是
认证场景ID。
1000000006
CertifyId
String
是
实东说念主认证独一标志。
91707dc296d469ad38e4c5efa6a0f24b
复返数据称呼
类型
姿色
示例值
RequestId
String
央求ID。
130A2C10-B9EE-4D84-88E3-5384FF039795
Message
String
央求音讯的反应信息。
success
Code
String
复返码。对于复返码的防止讲明,请参见复返Code和Message。
200
ResultObject.Passed
String
认证遵守。取值:
T:通过。
F:未通过。
T
ResultObject.SubCode
String
认证遵守姿色。细目请参见复返Code和Message。
200
ResultObject.IdentityInfo
String
认证的主体信息,一般的认证场景复返为空。
null
ResultObject.DeviceRisk
String
建筑风险标签。
VirtualBrowser
ResultObject.MaterialInfo
String
认证主体附件信息,主要为图片类材料。
示例见下文
ResultObject.UserInfo
String
记载在冷落字模式下用户输入的身份信息与对应编码。复返数据为JSON款式字符串,姓名中无冷落字复返为空字符串。
name:指用户输入的姓名。
verifyName:指通过考证的最终姓名编码。举例冷落字是通过转码认证通过:“王先生”,实质认证通过是“王先”。
number:指用户输入的证件号码。
{
"number":"610***********1110",
"name":"王先生",
"verifyName":"王先"
}
复返示例胪陈ResultObject.MaterialInfo的JSON款式示例
{ // 是否为报复:报复为T,非报复为F。 "faceAttack": "T", // 是否有脸部遮拦:有脸部遮拦为T,不然为F。 "faceOcclusion": "F", // 认证的相片信息。 "facialPictureFront": { //东说念主脸报复分。 "faceAttackScore": 0.00008597839769208804, // 相片存放客户上海区域的OSS里,此为相片的bucket名。 "ossBucketName": "cn-shanghai-aliyun-cloudauth-1260051251634779", // 相片存放客户上海区域的OSS里,此为相片的文献名。 "ossObjectName": "verify/1260051251634779/03a081bd96328aedf83f635f39a50c57_0.jpeg", // 相片https地址,有用期15分钟,从查询时运行计时。 "pictureUrl": "-shanghai-aliyun-cloudauth-1260051251634779.oss-cn-shanghai.aliyuncs.com/verify/1260051251634779/03a081bd96328aedf83f635f39a50c57_0.jpeg?Expires=1625371140&OSSAccessKeyId=STS.NTX1ngfr6Acg2Pmnn2RYM****&Signature=Hw5BF9WxJs6wI68IxKs41cxCU8****&security-token=CAISjgJ1q6Ft5B2yfSjIr5ftetTTi60X9qGMMHbcim5nXtZhu7GT1Dz2IH1PdXFgA+gds/swmm5U7vgalrkqEcEdHRGdN5YpsM8LrlzwO1h2TGRsq+5qsoasPETOITyZtZagToeUZdfZfejXGDKgvyRvwLz8WCy/Vli+S/OggoJmadJlNWvRL0AxZrFsKxBltdUROFbIKP+pKWSKuGfLC1dysQcO4gEWq4bHm5fCskKD1Qenk7FO+9uuc6LJNZc8YM1NNP6ux/Fze6b71ypd1gNH7q8ejtYfpGyW5oHHWwIMvErYbbaMrIV1WwZ9Z7knHaVAq+XwnOBkuuXYnIns0BdLMuZOSD7YQI2wYWEwgBcxt78agAF/HZbelNLYWtipAu5X5oG1t22SqIr1p3TMK5FrjDIVeWOppcxeRXtU+jR7hGcwd25scGhiraoxTXV3sxw/6dhFSswQ37O4j+/rCPtiGauqn2ZMdMj/vYwKb6KmpQqa+tR/9cxhS6hoIQRq0SUIfyXl5ZUiZbTjW22iwuX+PwzVCw==", // 视频存放客户上海区域的OSS里,此为视频的文献名(仅当客户端耕种视频参数时复返)。 "ossVerifyVideoObjectName": "verify/1260051251634779/03a081bd96328aedf83f635****_verifyvideo_dcb7.mov", // 视频https或htttp地址,有用期15分钟,从查询时运行计时(仅当客户端耕种视频参数时复返)。 "verifyVideoUrl": "-shanghai-aliyun-cloudauth-1260051251634779.oss-cn-shanghai.aliyuncs.com/verify/******? // 活体东说念主脸质地分数。 "qualityScore": 99.93476867675781, // 东说念主脸和公安比对分数,阈值可参考下表防止讲明。 "verifyScore": 57.678396649466755 // 左迁标志字段(仅当deviceType是h5时复返)Keep-未左迁;url-该笔认证用户触发了URL左迁完成认证;video-该笔认证用户触发了视频左迁完成认证 "procedurePriorityResult":"keep" }, }
ResultObject.SubCode乖谬码讲明,请参见ResultObject.SubCode乖谬码讲明。
verifyScore阈值讲明
千分之一误识率
万分之五误识率
万分之一误识率
十万分之五误识率
十万分之一误识率
70
71.5
75
76.5
80
复返Code和Message讲明,请参见复返Code和Message。
SDK调用示例在使用金融级实东说念主认证处事之前,您需要怒放处事。具体操作,请参见怒放金融级实东说念主认证处事。
在集成SDK前,您需要创建一个用户调用SDK的用户身份,得回身份关联的OpenAPI拜谒凭证,并授予拜谒云上资源的拜谒权限。如何创建和授权RAM用户,以及如何生成用于调用处事的AccessKey,请参见授权RAM用户拜谒处事。
认证场景指您的用户使用金融级实东说念主认证处事完成用户实东说念主认证的不同场景,举例,登录、支付等。您不错添加一个或多个场景,并为不同的场景成立不同的认证决策。调用InitFaceVerify发起认证央求时,需要传输认证场景ID。如何添加认证场景并得回认证场景ID, 请参见添加认证场景。
集成SDK并编写代码(以Java谈话为例,条目JDK 1.8及以上版块)。
在pom.xml中添加如下依赖,即可在Maven工程中使用SDK。
Java SDK依赖。以下依赖版块仅供参考,残暴在实质成立时得回最新依赖版块。
<dependency> <groupId>com.aliyun</groupId> <artifactId>cloudauth20190307</artifactId> <version>2.5.0</version> </dependency>
身份考证依赖。请查抄ChangeLog.txt得回统统已发布的版块列表(残暴使用最新的版块)。
<dependency> <groupId>com.aliyun</groupId> <artifactId>credentials-java</artifactId> <version>LATEST</version> </dependency>
接口调用示例。
InitFaceVerify接口调用示例
import java.util.Arrays; import java.util.List; import com.aliyun.cloudauth20190307.Client; import com.aliyun.cloudauth20190307.models.*; import com.aliyun.teaopenapi.models.Config; import com.aliyun.teautil.models.RuntimeOptions; public class InitFaceVerify { public static void main(String[] args) throws Exception { InitFaceVerifyRequest request = new InitFaceVerifyRequest(); // 请输入场景ID+L。 request.setSceneId(100000xxxxL); // 耕种商户央求的独一标志。 request.setOuterOrderNo("xxxx"); // 认证决策。 request.setProductCode("ID_PRO"); // 模式。 request.setModel("LIVENESS"); request.setCertType("IDENTITY_CARD"); request.setCertName("张先生"); request.setCertNo("xxxx"); // MetaInfo环境参数。 request.setMetaInfo("{}"); //业务页面回跳的贪图地址。 request.setReturnUrl("https://www.aliyundoc.com"); //request.setMobile("130xxxxxxxx"); //request.setIp("114.xxx.xxx.xxx"); //request.setUserId("12345xxxx"); //request.setCallbackUrl("https://www.aliyundoc.com"); //request.setCallbackToken("xxxxx"); // 如需开启个东说念主信息加密传输。 //request.setEncryptType("SM2"); //request.setCertName("BCRD/7ZkNy7Q*****M1BMBezZe8GaYHrLwyJv558w=="); //request.setCertNo("BMjsstxK3S4b1YH*****Pet8ECObfxmLN92SLsNg=="); // 保举,辅助处事路由。 InitFaceVerifyResponse response = initFaceVerifyAutoRoute(request); // 不辅助处事自动路由。 //InitFaceVerifyResponse response = initFaceVerify("cloudauth.cn-shanghai.aliyuncs.com", request); response.getBody().getRequestId(); response.getBody().getResultObject().getCertifyId(); System.out.println(response.getBody().getRequestId()); System.out.println(response.getBody().getCode()); System.out.println(response.getBody().getMessage()); System.out.println(response.getBody().getResultObject() == null ? null : response.getBody().getResultObject().getCertifyId()); } private static InitFaceVerifyResponse initFaceVerifyAutoRoute(InitFaceVerifyRequest request) { // 第一个为主区域Endpoint,第二个为备区域Endpoint。 List<String> endpoints = Arrays.asList("cloudauth.cn-shanghai.aliyuncs.com", "cloudauth.cn-beijing.aliyuncs.com"); InitFaceVerifyResponse lastResponse = null; for (int i=0; i<endpoints.size(); i++) { try { InitFaceVerifyResponse response = initFaceVerify(endpoints.get(i), request); lastResponse = response; // 处事端乖谬,切换到下个区域调用。 if(response != null){ if(500 == response.getStatusCode()){ continue; } if(response.getBody() != null){ if("500".equals(response.getBody().getCode())){ continue; } } } // 宽泛复返 return lastResponse; }catch (Exception e) { e.printStackTrace(); if(i == endpoints.size()-1){ throw new RuntimeException(e); } } } return lastResponse; } private static InitFaceVerifyResponse initFaceVerify(String endpoint, InitFaceVerifyRequest request) throws Exception { // 阿里云账号AccessKey领有统统API的拜谒权限,残暴您使用RAM用户进行API拜谒或日常运维。 // 激烈残暴不要把AccessKey ID和AccessKey Secret保存到工程代码里,不然可能导致AccessKey泄露,遏制您账号下统统资源的安全。 // 本示例通过阿里云Credentials用具从环境变量中读取AccessKey,来完结API拜谒的身份考证。如何成立环境变量,请参见https://help.aliyun.com/document_detail/378657.html。 com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client(); Config config = new Config(); config.setCredential(credentialClient); config.setEndpoint(endpoint); // 耕种http代理。 //config.setHttpProxy(":xxxx"); // 耕种https代理。 //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx"); Client client = new Client(config); // 创建RuntimeObject实例并耕种运行参数。 RuntimeOptions runtime = new RuntimeOptions(); runtime.readTimeout = 10000; runtime.connectTimeout = 10000; return client.initFaceVerifyWithOptions(request, runtime); } }
DescribeFaceVerify接口调用示例
import java.util.Arrays; import java.util.List; import com.aliyun.cloudauth20190307.Client; import com.aliyun.cloudauth20190307.models.DescribeFaceVerifyRequest; import com.aliyun.cloudauth20190307.models.DescribeFaceVerifyResponse; import com.aliyun.teaopenapi.models.Config; import com.aliyun.teautil.models.RuntimeOptions; public class DescribeFaceVerify { public static void main(String[] args) throws Exception { // 通过以下代码创建API央求并耕种参数。 DescribeFaceVerifyRequest request = new DescribeFaceVerifyRequest(); // 请输入场景ID+L。 request.setSceneId(0L); request.setCertifyId("xxxx"); // 保举,辅助处事路由。 DescribeFaceVerifyResponse response = describeFaceVerifyAutoRoute(request); // 不辅助处事自动路由。 //DescribeFaceVerifyResponse response = describeFaceVerify("cloudauth.cn-shanghai.aliyuncs.com", request); System.out.println(response.getBody().getRequestId()); System.out.println(response.getBody().getCode()); System.out.println(response.getBody().getMessage()); System.out.println( response.getBody().getResultObject() == null ? null : response.getBody().getResultObject().getPassed()); System.out.println( response.getBody().getResultObject() == null ? null : response.getBody().getResultObject().getSubCode()); System.out.println( response.getBody().getResultObject() == null ? null : response.getBody().getResultObject().getIdentityInfo()); System.out.println( response.getBody().getResultObject() == null ? null : response.getBody().getResultObject().getDeviceToken()); System.out.println( response.getBody().getResultObject() == null ? null : response.getBody().getResultObject().getMaterialInfo()); } private static DescribeFaceVerifyResponse describeFaceVerifyAutoRoute(DescribeFaceVerifyRequest request) { // 第一个为主区域Endpoint,第二个为备区域Endpoint。 List<String> endpoints = Arrays.asList("cloudauth.cn-shanghai.aliyuncs.com", "cloudauth.cn-beijing.aliyuncs.com"); DescribeFaceVerifyResponse lastResponse = null; for (int i = 0; i < endpoints.size(); i++) { try { DescribeFaceVerifyResponse response = describeFaceVerify(endpoints.get(i), request); lastResponse = response; // 处事端乖谬,切换到下个区域调用。 if (response != null) { if (500 == response.getStatusCode()) { continue; } if (response.getBody() != null) { if ("500".equals(response.getBody().getCode())) { continue; } } } return lastResponse; } catch (Exception e) { if (i == endpoints.size() - 1) { throw new RuntimeException(e); } } } return lastResponse; } private static DescribeFaceVerifyResponse describeFaceVerify(String endpoint, DescribeFaceVerifyRequest request) throws Exception { // 阿里云账号AccessKey领有统统API的拜谒权限,残暴您使用RAM用户进行API拜谒或日常运维。 // 激烈残暴不要把AccessKey ID和AccessKey Secret保存到工程代码里,不然可能导致AccessKey泄露,遏制您账号下统统资源的安全。 //本示例通过阿里云Credentials用具从环境变量中读取AccessKey,来完结API拜谒的身份考证。如何成立环境变量,请参见https://help.aliyun.com/document_detail/378657.html。 com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client(); Config config = new Config(); config.setCredential(credentialClient); config.setEndpoint(endpoint); // 耕种http代理。 //config.setHttpProxy(":xxxx"); // 耕种https代理。 //config.setHttpsProxy(":xxxx"); Client client = new Client(config); // 创建RuntimeObject实例并耕种运行参数。 RuntimeOptions runtime = new RuntimeOptions(); runtime.readTimeout = 10000; runtime.connectTimeout = 10000; return client.describeFaceVerifyWithOptions(request, runtime); } }