Jarvis 服务规范

简介

Jarvis 服务规范(JService 规范)提供了一个规范,服务可以根据这个规范接入 Jarvis。 符合 Jarvis 规范的服务简称 JService。JService 由 Jarvis 统一管理用户、权限等,并且做为 Jarvis 的一个 SUser。

说明:

SUser 解释请参考“名称解释

优势

  • 对 JService 来说,减少了用户及权限相关的开发量;

  • 对使用 JService 的用户来说,使用统一的账号方便地调用所有符合 Jarvis 规范的服务。

服务接入 Jarvis 指南

  1. SUser 申请

  1. 服务接入 Jarvis 示意图

_images/jieru.png

说明:

  • BUser 使用 app_token 调用 JService 提供的 API,生成签名的明文拼接规则由服务方定义,加签规则需遵循 Jarvis 规则,参考“API签名”;

  • JService 调用 JMan 用户登录接口,获得 token 和 token 有效期; 为避免频繁调用,建议使用缓存技术,超过有效期后再调用;

  • JService 使用用户签名、按明文拼接规则生成的明文和获得的 token 调用 JMan BUser 验证和权限查询接口, 该接口首先验证签名的合法性,合法将返回该用户的权限列表,不合法则返回签名错误信息;

  • JService 根据用户权限列表判断 BUser 是否有权限继续操作;

注意:

  1. BUser、SUser 解释请参考“名称解释

  2. 涉及的 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)