云服务器内容精选

  • 步骤5:调用服务 在Postman中新建一个请求,请求方式为选择"POST",按要求填写URL。 人证核身 证件版(二要素)API的URL为“https://ivs.cn-north-4.myhuaweicloud.com/v2.0/ivs-idcard-extention”。 选中“Headers”配置项,KEY、VALUE按下图进行填写,并复制步骤3中获取的Token值到“X-Auth-Token”的“VALUE”中。 图8 填写请求Header 填写接口的Body信息。选中“Body”的配置项,选中“raw”,将下方代码填充至请求体中。 人证核身证件版(二要素)API可用两种方式进行身份校验。详细接口参数介绍请参见API参考。 使用身份证图片进行校验。 使用身份证姓名、身份证号码文本进行校验(本示例使用该方式)。 uuid:唯一标识此次请求的ID,用户自定义,不超过64位。 身份证姓名、身份证号码请按实际填写。 { "meta": { "uuid": "10eb0091-887f-4839-9929-cbc884f1e20e" }, "data": { "req_data": [ { "verification_name": "张三", "verification_id": "44***********07" } ] }} 图9 填写请求Body 单击右上角“Send”按钮发送请求,查看识别结果。返回"valid"、"Successful certification",表示身份验证成功。 图10 查看识别结果
  • 步骤3:获取API凭证 调用 获取Token 接口时,需要使用API凭证用于身份认证。当前存在华为云账号、华为账号两种账号体系,两种账号在获取Token时有所差异,请参考以下步骤判断账号类型并获取相应的API凭证。 通过如何判断当前使用的是“华为云账号”还是“华为账号”判断当前所使用的是哪种账号类型。 登录“我的凭证”页面,并参考下图获取API凭证( IAM 用户名、账号名)。 如果您使用的是华为云账号,可以直接登录“我的凭证”页面获取API凭证。 如果您使用的是华为账号,请参考创建IAM用户并授权使用IVS先创建一个IAM用户,再使用IAM用户登录“我的凭证”页面获取API凭证。 图2 获取API凭证(IAM用户名、账号名)
  • IVS服务使用简介 人证核身服务(Identity Verification Solution,简称IVS),是指通过用户的身份证信息、人脸图片,与权威数据库进行比对,进而实现身份验证。 服务以开放API(Application Programming Interface,应用程序编程接口)的方式提供身份验证能力。用户调用API接口需要具备一定的编程开发基础,识别后返回的结果为JSON格式,用户需要通过编程来处理识别结果。 您可以选择合适的方式进行使用,使用前请参考申请服务开通所需要的API。 通过华为云 API Explorer 在线调用IVS服务API。 如果您是开发初学者,有代码编写基础,对HTTP请求与API调用有一定的了解,想快速体验IVS服务,该方式无需编码,只需要输入相关参数,即可调用API,体验服务应用效果。 通过可视化工具(如curl、Postman)发送请求调用IVS服务API。 如果您是开发工程师,熟悉代码编写,熟悉HTTP请求与API调用,您可以通过postman调用、调试API。使用方法请参见调用API实现人证核身证件版(二要素)。 通过软件开发工具包(SDK)调用IVS服务API。 如果您是开发工程师,熟悉代码编写,IVS服务为您提供Java、Python、Go等版本的SDK,方便您快速集成。使用方法请参见调用SDK实现人证核身证件版(二要素)。
  • 入门实践 当您完成了调用API、调用SDK基本操作后,可以根据自身的业务需求使用IVS提供的入门实践。 表1 常用最佳实践 实践 描述 活体人证核身 该实践基于于华为云人证核身服务IVS和 人脸识别服务 FRS构建,通过动作活体检测判断操作用户是否为真人,并将检测结果与用户身份证信息关联起来,使用人证核身技术,实现对用户身份真实性的核验。 同时,IVS三要素api,本身支持使用视频做身份核验,可以在不开通 人脸识别 服务情况下,实现活体人证核身。
  • 步骤3:获取示例代码 获取人脸检测SDK示例代码。 登录API Explorer,在“代码示例”中选择“Python”。 填写请求Body参数。输入数据填写uuid、verification_name、verification_id uuid:唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e verification_name:被验证人的姓名 verification_id:被验证人的身份证号码 复制代码示例至PyCharm中。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如下公共消息头需要添加到请求中。 Content-Type:消息体的类型(格式),必选,默认取值为“application/json”,有其他取值时会在具体接口中专门说明。 X-Auth-Token:用户Token,可选,当使用Token方式认证时,必须填充该字段。用户Token请参考认证鉴权。 添加消息头后的请求如下所示。 POST https://ivs.cn-north-4.myhuaweicloud.com/v2.0/ivs-standardContent-Type: application/jsonx-auth-token: MIIaBgYJKoZIhvcNAQcC……
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。 当资源不存在的时候,PATCH可能会去创建一个新的资源。 人证核身标准版(三要素)的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://ivs.cn-north-4.myhuaweicloud.com/v2.0/ivs-standard
  • 请求消息体 请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。若请求消息体中参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于人证核身标准版(三要素)接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示。 POST https://ivs.cn-north-4.myhuaweicloud.com/v2.0/ivs-standard Request Header: Content-Type: application/json X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDT...Request Body:{ "meta": { "uuid": "user_defined" }, "data": { "req_data": [ { "idcard_image1": "/9j/4AAQSkZJRgABAgEASA...", "idcard_image2": "/9j/4AAAAABQSkZJRgABAgEASB...", "face_image": "/9j/4BBQSkZJRgABAgEASB..." } ] }} 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URI中的参数说明 参数 说明 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 endpoint 指定承载REST服务端点的服务器 域名 或IP,不同服务不同区域的endpoint不同,您可以从地区和终端节点获取。 例如IVS服务在“华北-北京四”区域的“endpoint”为“ivs.cn-north-4.myhuaweicloud.com”。 resource-path 资源路径,也即API访问路径。 从具体API的URI模块获取,例如人证核身标准版(三要素)API的“resource-path”为“/v2.0/ivs-standard”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 例如,您需要在“华北-北京四”区域调用人证核身标准版(三要素)API,则需使用“华北-北京四”区域的Endpoint(ivs.cn-north-4.myhuaweicloud.com),并在标准版(三要素)的URI部分找到resource-path(/v2.0/ivs-standard),拼接起来如下所示。 https://ivs.cn-north-4.myhuaweicloud.com/v2.0/ivs-standard 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 状态码 HTTP 状态码为三位数,分成五个类别:1xx:相关信息;2xx:操作成功;3xx:重定向;4xx:客户端错误;5xx:服务器错误。 状态码如下所示。 状态码 编码 状态说明 100 Continue 继续请求。 这个临时响应用来通知客户端,它的部分请求已经被服务器接收,且仍未被拒绝。 101 Switching Protocols 切换协议。只能切换到更高级的协议。 例如,切换到HTTPS的新版本协议。 200 OK 服务器已成功处理了请求。 201 Created 创建类的请求完全成功。 202 Accepted 已经接受请求,但未处理完成。 203 Non-Authoritative Information 非授权信息,请求成功。 204 No Content 请求完全成功,同时HTTP响应不包含响应体。 在响应OPTIONS方法的HTTP请求时返回此状态码。 205 Reset Content 重置内容,服务器处理成功。 206 Partial Content 服务器成功处理了部分GET请求。 300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择。 301 Moved Permanently 永久移动,请求的资源已被永久的移动到新的URI,返回信息会包括新的URI。 302 Found 资源被临时移动。 303 See Other 查看其它地址,使用GET和POST请求查看。 304 Not Modified 所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。 305 Use Proxy 所请求的资源必须通过代理访问。 306 Unused 已经被废弃的HTTP状态码。 400 Bad Request 非法请求。 建议直接修改该请求,不要重试该请求。 401 Unauthorized 在客户端提供认证信息后,返回该状态码,表明服务端指出客户端所提供的认证信息不正确或非法。 402 Payment Required 保留请求。 403 Forbidden 请求被拒绝访问。 返回该状态码,表明请求能够到达服务端,且服务端能够理解用户请求,但是拒绝做更多的事情,因为该请求被设置为拒绝访问,建议直接修改该请求,不要重试该请求。 404 Not Found 所请求的资源不存在。 建议直接修改该请求,不要重试该请求。 405 Method Not Allowed 请求中带有该资源不支持的方法。 建议直接修改该请求,不要重试该请求。 406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求。 407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权。 408 Request Timeout 服务器等候请求时发生超时。 客户端可以随时再次提交该请求而无需进行任何更改。 409 Conflict 服务器在完成请求时发生冲突。 返回该状态码,表明客户端尝试创建的资源已经存在,或者由于冲突请求的更新操作不能被完成。 410 Gone 客户端请求的资源已经不存在。 返回该状态码,表明请求的资源已被永久删除。 411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息。 412 Precondition Failed 未满足前提条件,服务器未满足请求者在请求中设置的其中一个前提条件。 413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息。 414 Request URI Too Long 请求的URI过长(URI通常为网址),服务器无法处理。 415 Unsupported Media Type 服务器无法处理请求附带的媒体格式。 416 Requested Range Not Satisfiable 客户端请求的范围无效。 417 Expectation Failed 服务器无法满足Expect的请求头信息。 422 Unprocessable Entity 请求格式正确,但是由于含有语义错误,无法响应。 429 Too Many Requests 表明请求超出了客户端访问频率的限制或者服务端接收到多于它能处理的请求。建议客户端读取相应的Retry-After首部,然后等待该首部指出的时间后再重试。 500 Internal Server Error 表明服务端能被请求访问到,但是不能理解用户的请求。 501 Not Implemented 服务器不支持请求的功能,无法完成请求。 502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。 503 Service Unavailable 被请求的服务无效。 建议直接修改该请求,不要重试该请求。 504 Gateway Timeout 请求在给定的时间内无法完成。客户端仅在为请求指定超时(Timeout)参数时会得到该响应。 505 HTTP Version Not Supported 服务器不支持请求的HTTPS协议的版本,无法完成处理。 父主题: 附录
  • 请求示例 使用身份证姓名、号码、人脸视频进行活体人证核验 POST https://{endpoint}/v2.0/ivs-standard{ "meta" : { "uuid" : "user_defined" }, "data" : { "req_data" : [ { "verification_name" : "张三", "verification_id" : "44***********07", "video" : "/9j/4AAQSkZJRgABAgEASABIAAD...", "actions" : "1,3,2", "nod_threshold" : 10 } ] }}
  • 响应示例 状态码: 200 OK { "meta" : { "uuid" : "user_defined" }, "result" : { "service_name" : "ivs-standard", "count" : 1, "resp_data" : [ { "verification_result" : "valid", "verification_message" : "Successful certification", "verification_code" : 1000, "similarity" : "65", "video_result" : { "alive" : true, "actions" : [ { "confidence" : 0.823, "action" : 1 }, { "confidence" : 0.823, "action" : 3 }, { "confidence" : 0.823, "action" : 2 } ], "picture" : "/9j/4AAQSkZJRgABAQEAYABgAAD/2w..." } } ] }} 状态码: 400 失败响应样例 { "error_code" : "IVS.0003", "error_msg" : "Some necessary request parameters in req_data is null."}
  • 响应参数 状态码: 200 表6 响应Body参数 参数 参数类型 描述 meta Meta object 请求元数据,例如表征本次请求的唯一标注uuid。 result result object 调用返回结果。 表7 Meta 参数 参数类型 描述 uuid String 唯一标识此次请求的ID,用户自定义,不超过64位。 表8 result 参数 参数类型 描述 service_name String 子服务名称。 count Integer 执行检测的数量,与resp_data字段对应。 resp_data Array of StandardRespDataByVideoAndNameAndId objects 请求列表,用于支持批量调用。目前暂时只支持单个数据查询。 表9 StandardRespDataByVideoAndNameAndId 参数 参数类型 描述 verification_result String 审核校验结果: "valid"表示身份审核通过; "invalid"表示身份审核不通过; "nonexistent"表示数据源没有该身份证号码,这种情况一般是被验证人正在办理户籍迁移,或者被验证人是军人或政要。 verification_message String 审核校验信息,具体参考校验信息说明 verification_code Integer 审核校验代码,具体参考校验信息说明 similarity String 人像相识度。取值范围[0,100],当入参detail为true时,取值范围为[0,1000]。 video_result VideoResult object 动作活体检测的检测结果。 表10 VideoResult 参数 参数类型 描述 alive Boolean 是否是活体。 actions Array of ActionsList objects 动作列表。 picture String 检测出最大人脸的图片base64。 表11 ActionsList 参数 参数类型 描述 confidence Double 置信度,取值范围0~1。 action Integer 动作编号,取值范围:[1,2,3,4],其中: 1:左摇头 2:右摇头 3:点头 4:嘴部动作 状态码: 400 表12 响应Body参数 参数 参数类型 描述 error_code String 调用失败时的错误码,具体请参考错误码。 调用成功时无此字段。 error_msg String 调用失败时的错误信息。 调用成功时无此字段。
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String X-Auth-Token值获取方法请参见认证鉴权。 Enterprise-Project-Id 否 String 企业项目ID。IVS支持通过企业项目管理(EPS)对不同用户组和用户的资源使用,进行分账。 获取方法:进入“企业项目管理”页面,单击企业项目名称,在企业项目详情页获取Enterprise-Project-Id(企业项目ID)。 企业项目创建步骤请参见用户指南。 说明: 说明: 创建企业项目后,在传参时,有以下三类场景。 携带正确的ID,正常使用IVS服务,账单的企业项目会被分类到企业ID对应的企业项目中。 携带格式正确但不存在的ID,正常使用IVS服务,账单的企业项目会显示对应不存在的企业项目ID。 不携带ID或格式错误ID(包含特殊字符等),正常使用IVS服务,账单的企业项目会被分类到"default"中。 表2 请求Body参数 参数 是否必选 参数类型 描述 meta 是 Meta object 请求元数据,例如表征本次请求的唯一标注uuid。 data 是 data object 请求消息的数据部分。 表3 Meta 参数 是否必选 参数类型 描述 uuid 否 String 唯一标识此次请求的ID,用户自定义,不超过64位。 表4 data 参数 是否必选 参数类型 描述 req_data 否 Array of StandardReqDataByVideoAndNameAndId objects 请求列表,用于支持批量调用。目前暂时只支持单个数据查询。 表5 StandardReqDataByVideoAndNameAndId 参数 是否必选 参数类型 描述 verification_name 是 String 被验证人的姓名。 verification_id 是 String 被验证人的身份证号码。 video 是 String 现场拍摄人像视频数据,使用base64编码。 视频文件大小不超过8MB,建议客户端压缩到200KB~2MB。要求base64编码后大小不超过10M。 限制视频时长1~15秒。 建议帧率10fps~30fps。 封装格式:mp4、avi、flv、webm、asf、mov。 视频编码格式:h261、h263、h264、hevc、vc1、vp8、vp9、wmv3。 actions 是 String 动作代码顺序列表,英文逗号(,)分隔。建议单动作,目前支持的动作有: 1:左摇头 2:右摇头 3:点头 4:嘴部动作 嘴部动作建议嘴唇距离大于3厘米,左右摇头动作建议角度15-30度。 nod_threshold 否 Double 该参数为点头动作幅度的判断门限,取值范围:[1,90],默认为10,单位为度。该值设置越大,则越难判断为点头。 detail 否 Boolean 响应参数similarity是否详细显示,默认为false。 true表示响应中的similarity为0~1000的小数。 false表示响应中的similarity为0~100的整数。
  • 请求示例 使用身份证正、反面图片、人脸视频进行活体人证核验 POST https://{endpoint}/v2.0/ivs-standard{ "meta" : { "uuid" : "user_defined" }, "data" : { "req_data" : [ { "idcard_image1" : "/9j/4AAQSkZJRgABAgEASA...", "idcard_image2" : "/9j/4AAAAABQSkZJRgABAg...", "video" : "/9j/4AAQSkZJRgABAgEASABIAAD...", "actions" : "1,3,2", "nod_threshold" : 10 } ] }}