本开放API使用HMAC方式进行第三方身份使用认证。HMAC(密钥散列消息认证码,英语:Keyed-hash message authentication code),是一种通过特别计算方式之后产生的消息认证码(MAC),使用密码散列函数,同时结合一个加密密钥。它可以用来保证数据的完整性,同时可以用来作某个消息的身份验证。

1.HTTP的REST结构图

|----- PART 1 -----|-------------- PART 2 --------------|
+-------------------------------------------------------+
|        URL     | HEADER     |         BODY            |
+-------------------------------------------------------+
         |             |                 |

        \ /           \ /               \ /

 { path-para }      通用头部           jsonFields
 [ query_para ]     认证头部

2.申请apiKey和secretKey

在使用本开放平台之前,您需要申请属于您的apiKey和secretKey

3.RESTful授权请求

POST /ws-rest/v1/users/147/envelopes HTTP/1.1
Accept: application/json
Content-Type: application/json
Date: Wed, 02 Nov 2016 03:25:54 GMT
Authorization:HmacSHA512 a1S0H2-U0-v5I-0586-017-z6D-7B5-K0h-1o0-G0-9923G3Xm:53f7ae4a-937b-4ddc-8872-42dd094d56eb:NCMwvHfZS9ZzB2SgVbRzTuS/N5yDRM8Ak6tRvCavHD5T9nKjydc9ha+Rj48e0YIFC5V9IRtFL8Z1d0hvse7Ulg==
User-Agent: SignIt RestAPI Client v1.0.0
Host: localhost:8080
名称 释义
POST 请求方法
Accept 客户端期望接收数据类型
Content-Type 发起的请求内容类型
Date 请求时间
Authorization 认证信息
User-Agent 用户代理
Host 请求主机信息

4.认证信息头

Authorization:<algorithm> <apiKey>:<nonce>:<signature>
名称 释义 内容
algorithm 摘要算法 默认为 HmacSHA512
apiKey apiKey 接口访问的授权码,由申请获得的
nonce 随机数 客户端生成的随机数(至少16位)
signature 摘要值 Base64编码后的摘要值

5.signature构建方法

1.使用secretKey作为HMAC需要的密钥KEY:

2.根据KEY和algorithm初始化HMAC,将以下字段根据"名称"字典序后取其对应值,且值间以'\n'分隔(最终以'\n'结尾)的累积更新摘要,生成最终摘要值:

名称 释义
apiKey 由申请获得的接口访问的授权码
contentType 请求内容类型
date 请求时间
host(serverName:serverPort) 请求主机信息(访问地址:访问端口)
method 请求方式
nonce 随机数
payload 请求体内容数据
resource 请求资源URI
scheme 协议类型(如:http/https/ftp等)

3.将2中得到的摘要值进行Base64编码,得到最终signature:

6.响应

验证成功后,您将收到请求操作的返回结果:

{
 "resultStatusCode":"100600000",
 "resultCode":0,
 "resultDesc":"\u521b\u5efa\u4fe1\u5c01\u6210\u529f",
 "resultData":{
 "envelopeId":"978dc60b-af1c-4227-9ddf-3be73ab75e96",
 "link":
     {"href":"/ws-rest/v1/users/978dc60b-af1c-4227-9ddf-3be73ab75e96/envelopes/{envelope-id}",
     "method":"GET"
     },
 "statusDatetime":1478058994000,"type":0,"status":0}
}

results matching ""

    No results matching ""