# 基本概念介绍

# 术语介绍

1、region、openid和appkey(企业主动调用勤策接口时使用) region:企业账号所在数据中心域名

openid:企业接入唯一授权标识

appkey:企业授权数据签名密钥,是企业调用接口时用于保障数据安全的“钥匙”,为了保证数据的安全,appkey务必不能泄漏。

每个企业OpenAPI对应的region只会有一个,但可以配置多个openid和appkey。每个openid可以对应设置不同的接口调用权限。电脑侧登录勤策网站 (opens new window),在管理后台 -> “系统管理” -> “集成管理” -> “API管理”, 企业管理员使用勤策app扫码验证,即可看到配置页面,每个字段列对应如下:

  1. 允许调用IP列,通过openid及appkey调用接口时,可以设置访问来源IP为白名单。IP白名单是指一组IP列表,只有该列表中的IP地址的程序可以调用接口。IP为空表明未对访问来源IP做限制

  2. 授权API列,通过openid及appkey调用接口时,可以选择允许授权访问的接口,默认是允许所有接口访问。

  3. OpenAPI地址列,访问OpenAPI时使用的地址,URL中的域名为企业所在数据中心region。在调用接口时,请将接口定义文档中的请求地址由 https://{region}https://openapi.waiqin365.com 替换成下图【OpenAPI地址】列中的值。 如果使用了openapi_tools-x.x.x.jar接入时需要设置wqOpenApi.setOpenurl(String.format("%s/api", "OpenAPI地址"));

背景:由于勤策由单云升级为多云的模式,所以地址可能是多云中的其中一个,对于有独立域名的企业OpenAPI地址对应自己的独立域名地址。 具体地址可以通过勤策平台【系统管理->集成管理->API管理->API授权->OpenAPI地址】查询,如下图的【OpenAPI地址】列

avatar

avatar

2、pushid、pushsecret、callbackid(企业接收勤策接口推送数据时使用)

pushid:推送id,企业接收推送数据的唯一授权标识

pushsecret:推送签名密钥

用于计算签名。第三方系统提供的URL是公开可访问的,这就意味着拿到这个URL,就可以往该链接推送消息。那么URL服务需要解决两个问题:
1)如何分辨出是否为勤策来源
2)如何分辨出推送消息的内容是否被篡改
通过数字签名就可以解决上述的问题。具体为:约定pushsecret作为密钥,仅第三方系统和勤策知道,在传输中不可见,用于参与签名计算。勤策在推送消息时,将消息内容与约定pushsecret作为密钥计算出签名。第三方系统接收到推送消息时,也按相同算法计算出签名。如果为同一签名,则可信任来源为勤策,并且内容是完整的。
如果非勤策来源,由于攻击者没有正确的pushsecret,无法算出正确的签名
如果消息内容被篡改,由于第三方系统会将接收的消息内容与pushsecret重算一次签名,该值与参数的签名不一致,则会拒绝该请求。

callbackid:通道ID,每个推送外部系统接口URL对应一个通道ID。当企业需要将同一条数据推送到多个系统时,用于接收方区分不同的系统接口URL。一条数据只有在所有通道都接收成功时系统才判定为推送成功。推送成功后每天凌晨将不再重复尝试推送。

3、勤策ID和第三方ID

勤策ID:是勤策系统的唯一标识符,值为Long型的UUID,如7053012386494123505

第三方ID:来源于第三方系统的唯一标识,通过API新增接口产生的业务数据中此字段必填。 通过WEB页面新增产生的业务数据中无此字段。后续通过接口调用模式只能操作通过API新增的数据。

注:勤策ID和第三方ID不能同时为空,如果同时存在优先取勤策ID