IoT服务化集成
一、用户同步
1. 全量同步租户信息
调用接口:/iam-view/service/application/application/{applicationUniqueId}
参数 | 说明 |
---|---|
applicationUniqueId | 应用唯一识别码 |
获取到租户信息后,将租户信息同步到company表中、针对每个租户创建相应的数据表并记录同步时间。
2. 全量同步组织信息
调用接口:/iam-view/service/tenant/{tenantUniqueId}
参数 | 说明 |
---|---|
tenantUniqueId | 租户唯一识别码 |
获取到组织后,将组织信息同步到organization表中,并记录同步时间。
3. 全量同步人员信息
调用接口:/iam-view/service/organize/baseUser/{organizeUniqueId}
参数 | 说明 |
---|---|
organizeUniqueId | 组织唯一识别码 |
获取到人员信息后,将人员信息同步到user表中,并记录同步时间。
4. 增量同步租户信息
调用接口:/iam-view/service/tenant/synchronize?times=
参数 | 说明 |
---|---|
times | Long型时间戳数组 |
每十分钟同步租户增量信息,times为上次记录的同步时间戳和当前时间戳,获取到租户信息后,将租户信息同步到company表中、针对每个租户创建相应的数据表并记录同步时间。
5. 增量同步组织信息
调用接口:/iam-view/service/organize/synchronize/organize?tenantUniqueId=×=
参数 | 说明 |
---|---|
tenantUniqueId | 租户唯一识别码 |
times | Long型时间戳数组 |
每十分钟同步组织增量信息,times为上次记录的同步时间戳和当前时间戳,获取到组织信息后,将组织信息同步到organization表中,并记录同步时间。
6. 增量同步人员信息
调用接口:/iam-view/service/organize/synchronize/baseUser?organizeUniqueId=×=
参数 | 说明 |
---|---|
organizeUniqueId | 组织唯一识别码 |
times | Long型时间戳数组 |
每十分钟同步人员增量信息,times为上次记录的同步时间戳和当前时间戳,获取到人员信息后,将人员信息同步到user表中,并记录同步时间。
二、SSO对接
1. 门户系统跳转到Iot平台,请求code。
2. 请求code
3. 请求token
code获取成功后,调用https://{domain}/auth/realms/SE-UNICLOUD/protocol/openid-connect/token接口获取token,需要传递的参数包括:
(1) Authorization: 采用basic auth(认证头信息)
(2) 头信息accept(application/json)和 Content-Type(application/x-www-form-urlencoded)
(3) 请求体grant_type(authorication_code)、redirect_url(和第3步中的一致)、code(第二部中获取的code)
4. 获取token
在回到redirect_url中获取token、token过期时间、refresh_token、refresh_token过期时间,通过token获取对应的用户信息。
5. 获取用户信息
Token获取成功后,调用https://{domain}/auth/realms/SE-UNICLOUD/protocol/openid-connect/userinfo接口获取用户信息,需要传递的参数包括:
(1) Authorization: bearer Token,传入accesstoken
(2) 头信息accept(application/json)和 Content-Type(application/x-www-form-urlencoded)
获取到用户信息后,将上一步中获取的token、token过期时间、refresh_token、refresh_token过期时间进行保存,并跳转到平台首页。
三、服务化集成
1. 实例化请求接口
当用户在Paas平台订阅服务后,会调用下面的接口:
接口地址:/service/instance/{instanceId}
请求方式:POST
接口参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
service_id | 是 | string | 服务的ID |
plan_id | 是 | string | 已请求服务实例的计划的ID |
parameters | 是 | Object | 参数信息 |
parameters.username | 是 | String | 用户名 |
parameters.phone | 是 | String | 手机号 |
请求示例:
{
"service_id": 111,
"plan_id": 222,
"parameters": {
"username": "sedt",
"phone": "182****7819"
}
}
处理逻辑:
(1) 判断请求的格式、参数是否正确
(2) 判断用户是否存在
(3) 判断用户是否已订阅该服务
(4) 将用户状态改为启动状态,并分配相应的用户权限
(5) 保存用户订阅的服务信息(service_id、instance_id、plan_id)
2. 删除实例接口
当用户在Paas平台取消订阅服务后,会调用下面的接口:
接口地址:/service/instance/{instanceId}
请求方式:DELETE
处理逻辑:
(1) 判断服务实例是否存在
(2) 根据服务实例查询对应的用户,取消用户权限并将用户状态改为禁用
3. 推送监控指标接口
每天定时向Paas平台推送Iot平台监控指标,调用下面的接口:
接口地址:/api/v2/{svcId}/{svcInstanceId}/metric
请求方式:POST
参数说明:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
svcId | 是 | string | 服务的ID。与provinsion 时的服务ID 相同。 |
svcInstanceId | 是 | string | 服务实例ID,与provinsion 时的服务实例ID 相同 |
请求内容:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
day | 是 | Date | 上传日期。必填项。日期格式为:yyyy-MMdd'T'HH: mm:ss.SSSZ |
metricData | 是 | Json object string | JSON 对象所转换成的字符串,其中每个key 为metric 的名称,每个value 为metric 的数字值。 |
请求示例:
[{ "day": "2020-07-20T09:45:23.195Z", "metricData": "{\"产品数量\":2,\"设备数量\":500,\"设备激活数\":300,\"设备在线数\":200,\"设备离线数\":300}" }]