为我的用户创建子账号并分配设备
为我的用户创建子账号并分配设备
子账号对接模式用于在管理员账户权限范围内创建子账号,并为不同子账号分配不同权限,从而在不暴露管理员 AccessToken 的前提下授权他人访问设备。子账号泄露时影响范围限于该子账号的 Policy,而非全部设备资源。
身份见 管理员与子账号。授权见 授权模型:自有设备与用户设备。HTTP 接口索引见 账号与授权 API。
前提
管理员 accessToken。accessToken:获取管理员 token:appId 与 appSecret 在控制台「我的应用 → 应用信息」。有效期与刷新见 管理 token:缓存、过期与刷新。
步骤
常见顺序如下(参数见各接口页):
- 创建子账号。createSubAccount:创建子账号:使用手机号或邮箱创建;返回
openid为子账号 ID。 - 分配设备权限。addPolicy:添加子账号权限:
policy为权限策略;单次最多授权 10 路设备或通道(statement或resource数组长度不超过 10)。配置细则见下文 Policy 与 permission。 - 获取子账号 token。subAccountToken:返回
accessToken与expireTime(秒);缓存与刷新见 管理 token。
其它维护接口(非必经步骤):
- listSubAccount:获取子账号列表
- deleteSubAccount:删除子账号
- clearPolicy:清除子账号授权策略
- queryDevicePermission:子账号设备维度权限
- deleteDevicePermission:删除子账号设备权限
- listSubAccountDevice:查询子账号有权限的设备列表
- subAccountDeviceInfo:获取子账号下指定的授权设备详细信息
- subAccountDeviceList:分页获取子账号下授权设备的详细信息
- getOpenIdByAccount:根据子账号获取 openId
Policy 与 permission
Policy 含 statement 数组;每条 statement 描述 permission 与 resource。请求时系统逐条匹配,任一条匹配成功则鉴权通过;全部不匹配则禁止访问。
示例:
{
"statement": [
{
"permission": "Ptz,Talk,Config",
"resource": [
"dev:469631729",
"cam:544229080:1"
]
},
{
"permission": "Real",
"resource": [
"dev:470686804"
]
}
]
}
resource 格式为 {resourceType}:{resourceId}:
resourceType:dev(设备)或cam(通道)resourceId:设备序列号,或设备序列号:通道号
cam 资源隶属于对应 dev;对 dev 授权的权限可传递到其下通道(例如对 dev:544229080 授权 Real,则 cam:544229080:1 默认可预览)。
| permission | 适用资源 | 权限描述 |
|---|---|---|
| Alarm | dev、cam | 设备告警消息查询 |
| Config | dev、cam | 设备配置 |
| Ptz | dev、cam | 云台控制 |
| Capture | dev、cam | 设备抓图 |
| Upgrade | dev | 设备升级 |
| Format | dev | 格式化 SD 卡 |
| Real | dev、cam | 实时预览 |
| RecordReplay | dev、cam | 录像回放(云录像与本地录像) |
| Talk | dev、cam | 语音对讲 |
| DevControl | dev、cam | 设备完全控制(含现有及后续设备操作权限) |
各端实现
服务端 HTTP
上述接口请求地址在 https://openapi.lechange.cn/openapi/ 下。参数以各接口页为准。