Jarvis 服务规范¶
简介¶
Jarvis 服务规范(JService 规范)提供了一个规范,服务可以根据这个规范接入 Jarvis。 符合 Jarvis 规范的服务简称 JService。JService 由 Jarvis 统一管理用户、权限等,并且做为 Jarvis 的一个 SUser。
说明:
SUser 解释请参考“名称解释”
优势¶
对 JService 来说,减少了用户及权限相关的开发量;
对使用 JService 的用户来说,使用统一的账号方便地调用所有符合 Jarvis 规范的服务。
服务接入 Jarvis 指南¶
SUser 申请
参考“Jarvis账号申请流程”
服务接入 Jarvis 示意图

说明:
BUser 使用 app_token 调用 JService 提供的 API,生成签名的明文拼接规则由服务方定义,加签规则需遵循 Jarvis 规则,参考“API签名”;
JService 调用 JMan 用户登录接口,获得 token 和 token 有效期; 为避免频繁调用,建议使用缓存技术,超过有效期后再调用;
JService 使用用户签名、按明文拼接规则生成的明文和获得的 token 调用 JMan BUser 验证和权限查询接口, 该接口首先验证签名的合法性,合法将返回该用户的权限列表,不合法则返回签名错误信息;
JService 根据用户权限列表判断 BUser 是否有权限继续操作;
注意:
BUser、SUser 解释请参考“名称解释”
涉及的 JMan 接口详情见章节“接口管理服务JMan”
API 签名¶
为保证 API 的安全调用,JService 会对每个 API 请求通过签名进行身份验证,即需要在请求中包含签名(Signature)信息。
JMan 仅验证签名,明文加签规则必须遵守 Jarvis 规则,否则会导致验签失败。用于生成签名的明文拼接规则由 JService 自行定义,但我们推荐使用 Jarvis 建议规则。
明文拼接规则(建议)
由以下三部分字符串拼接而成
1.请求方式,如 GET / POST 等
2.请求地址,如 http://192.168.16.158:10010/account/v1.0.1/auths(请各自参考 Jarvis 服务的 API 文档)
3.请求参数按照 key 的 ASCII 字符串顺序升序排列,再把所有参数以“&”字符连接起来,如:app_token=app-a8187ae7-5671-4888-4321-2cc8c4d476ba&expires=600&file_token=4b37df98-259e-11e7-a963-f45c898f6be5
备注:
如果请求参数含图片等文件,先对文件做 MD5,再按照字母表顺序添加到明文字符串中;
如果参数为空,不参与明文拼接
POST 明文示例:
POSTapp_token=app-a8187ae7-5671-4888-4321-2cc8c4d476ba&expires=600&file_token=4b37df98-259e-11e7-a963-f45c898f6be5
GET 明文示例:
GETapp_token=app-a8187ae7-5671-4888-4321-2cc8c4d476ba&expires=600&file_token=4b37df98-259e-11e7-a963-f45c898f6be5
明文加签规则(必须)
使用 app_key 作为密钥,对获得的明文做 HMAC-SHA256
明文加签示例:
plain_text = POSTapp_token=app-a8187ae7-5671-4888-4321-2cc8c4d476ba&expires=600&file_token=4b37df98-259e-11e7-a963-f45c898f6be5
signature = hmacsha256(plain_text, app_key)