一、产品介绍
1.产品优势
2.简介
优特云的权限管理系统,是针对资源提供安全、灵活、可靠的权限管理解决方案。它既可以适用于IOT设备权限控制的通用场景,如IOT智能设备的家庭、企业使用场景;也可以适用于虚拟软件应用的权限管理。 总的来说,优特云的权限管理系统具有很高的通用性和实用性。
资源 : 资源是一个抽象的概念,它可以代指现实中的实体设备,也可以代指虚拟的应用、资产等。 所以优特云的权限管理可以针对实体设备和虚拟应用等做权限管理,适应于绝大多数的应用场景
3.应用场景
(1)家庭使用的智能IOT设备:
以家庭使用的智能门锁举例:
1.智能门锁初次使用时,需绑定一个拥有者;
2.拥有者可以使用该智能门锁的全部功能;
3.拥有者可以选择功能分享给其他家庭成员;
4.拥有智能门锁权限的用户,都可以对智能门锁进行操作(开锁);同时还支持在线、离线的操作,满足不同网络环境的场景;
5.拥有者如果不想使用智能门锁了,可以进行解绑操作。
(2)企业使用的智能IOT设备:
以公寓使用的智能门锁举例:
1.组织管理员可以给小区建立一个组织,这个组织是根据公寓情况建立的;
2.组织管理员可以给租户分配权限;
3.当租户退租时,组织管理员可以将该租户的权限移除。
(3)虚拟软件应用:
以某ERP软件开发商举例:
1.开发商手头有3个客户,每个客户购买的服务等级不同,开发商可以根据客户购买的服务等级开放不同的功能给客户使用;
2.开发商新增了某个免费通用功能时,可以设置开放给所有客户使用;
3.第二年客户A想要升级服务,客户B想降级服务,开发商可实时调整客户的服务等级;
4.开发商可以允许客户的组织情况,客户自己设置采购权限、审批权限、财务权限分派给不同的员工使用;
5.客户可以实时管理员工权限,查看员工使用情况。
(4)某些需要高度定制化、实时灵活变化的企业管理场景
当在需要高度定制化、实时灵活变化的企业管理场景时,可以使用优特云基于用户语言打造的权限转移方案,权限转移方案是根据客户特定的使用场景、特定的需求来进行定制的方案。
以某海关货物过关审查场景举例,某货物从A港出发,到达B港,期间要经历两个港口的审核检查,检查完毕后,审核员就再无权限
货物流转过程 | 权限转移过程 |
货物运送到A港后,A港入口海关员将货物封存上锁 | 上锁后,A港海关管理员拥有开锁权限 |
A港海关抽检员,对货物进行抽检 | A港海关抽检员在系统上申请对某些货物抽检,被抽检货物的开锁权限,暂时对抽检员进行开放 |
抽检完毕后,货物离开A港 | 货物离开A港后,A港所有人员无权限对货物进行开锁 |
货物到达B港后,B港海关抽检员,进行抽检 | B港海关抽检员在系统上申请对某些货物抽检,被抽检货物的开锁权限,暂时对抽检员进行开放 |
抽检通过后,货物离开B港 | 货物离开B港后,B港所有人员无权限对货物进行开锁 |
4.产品架构图
5.产品模块图
权限系统分为四大模块,分别是权限设置、权限判断、权限同步、权限转移。
(1)权限设置
定义:通过业务逻辑的驱动,建立系统内某权限实体与资源实例之间的关系,以及该关系生效的规则。同时我们根据不同的应用场景,分成个人级和企业级的权限管理系统,让客户根据自身的实际需求选择方案。
个人级 : 个人级权限主要用户解决个人资源权限控制的通用场景,例如智能门锁的家庭业务场景。
企业级 : 企业级权限主要用户解决企业内部资源权限控制的通用场景,例如智能门锁的公寓业务场景。
(2)权限判断
权限判断是优特云根据用户实际的权限,同意或拒绝某次对资源访问。同时在权限判断过程中,加入了非对称式的加密方案,确保指令在传输过程的可靠性。
(3)权限同步
权限同步方案一般用在实体设备需要权限判断的场景,通过同步方案保持云端和设备端的权限信息一致。根据不同的应用场景,有以下两种方案:
在线方案 : 权限的判断过程主要是云端负责,通过加密数据通道把权限判断结果下发到设备。
离线方案 : 权限的判断过程主要是设备端负责,云端只负责把权限文件下发到设备中,由设备根据权限文件进行判断。
(4)权限转移
某些行业中,会遇到比较复杂的业务流程,其中会涉及到多次的权限转移。优特云提供了独有的用户语言服务流程定制,为复杂的业务流程,提供灵活多变的方案,满足客户需求。
二、产品版本
个人级权限
V1.00.00.00(2020-04-15)
发布时间:2020-04-15
个人级权限基于角色管理资源与权限,用户通过绑定资源、分享资源获取权限。 v1.00版本主要实现了:
- 基于个人的权限管理(绑定、修改、解绑、查询)
- 权限分享
- 权限条件(永久、限时、限次、循环)
- 权限判断(在线判断、离线判断)
- 权限同步文件
- 权限的消耗逻辑
企业级权限
V1.00.00.00
发布时间:2020-07-01
企业级权限是基于组织管理资源,用户通过绑定组织节点获取权限。 v1.01版本主要实现了:
- 开发者对组织的管理(创建、管理、启用/禁用、删除)
- 组织管理员对组织的管理
- 管理用户
- 管理资源类型
- 管理节点
- 管理权限
- 基于组织的权限管理(绑定、修改、解绑、查询)
- 权限判断(在线判断、离线判断)
- 权限同步文件
- 权限的传递规则
V1.01.00.00
发布时间:2020-07-15
企业级权限是基于组织管理资源,用户通过绑定组织节点获取权限。 v1.01版本主要实现了:
- 增加子节点管理员的概念
- 组织节点增加禁用启用功能
- 用户增加时间概念
V1.02.01.00
发布时间:2020-09-15
企业级权限是基于组织管理资源,用户通过绑定组织节点获取权限。 v1.02版本主要实现了:
- 新增离线鉴权模块功能
- 新增批量查询设备详情接口
- 修复签名文件获取权限异常问题
三、使用限制
离线判断中权限文件的限制
目前离线判断是提前将权限文件下发到设备中,用户将关键信息传输给设备,设备通过最新的权限文件判断该用户是否拥有权限。该权限文件采用了RSA和AES的加密算法,所以该文件的大小依赖设备的性能,文件越大解密的时间越长。
目前我们采用NORDIC的nRF52832芯片(芯片参数:主频64M,Flash512,RAM64K)得出以下使用建议:
描述 | 使用限制 |
个人级权限文件 | 建议单个文件写入的用户数量不超过30个 |
企业级权限文件 | 建议单个文件写入的组织数量不超过30个 |
四、快速入门
1.个人级权限
步骤一:注册成为开发者
在使用权限系统之前,开发者需要先注册一个平台的开发者账号,目前平台注册是基于用户中心的。
注册
打开 开发者中心,会自动跳转到用户中心登录注册页面,按指引完成用户中心的注册流程。
登陆
注册完成后,会自动登陆开发者中心。目前权限系统的自动授权功能正在开发中,开发者注册完成之后,需要发邮件到【pengzhongyang@ut.cn】申请开通权限系统的使用权限。
步骤二:对接云端接口
外部应用服务器接入指引
在对接云端接口前,开发者需要先了解个人级权限和企业级权限的区别,在对接前就需要选择好。 具体的差别请查看使用指南。
外部应用服务端开发 | 操作指引 |
开发者注册 | 参考步骤一:注册成为开发者 |
个人级权限调用API列表 | https://yapi.utcook.com/project/124/interface/api 使用您注册的开发者账号登陆即可 |
个人级权限swagger 访问地址 | https://web.utcook.com/auth-internet/swagger-ui.html 使用您注册的开发者账号登陆即可 |
步骤三:接入APP、设备SDK
(1)Andriod SDK使用说明
在android studio中部署库文件 1.将libs目录下所在文件夹拷贝到工程libs目录中,如图:
2.将java目录下的文件夹拷贝到项目java路径下
3.在build.gradle文件中android下增加以下代码:
如图所示
4.最好rebuild整个项目
5.具体使用可以参考android/demo工程
(2)IOS SDK使用说明
在xcode中部署说明 1.将src源码目录添加到xcode工程
2.在接口调用的文件中导入头文件:uoffline_client.h,下图所示仅为示例,应用方需根据源码的路 径自行修改头文件的引用路径
3.具体使用,可以参考ios/demo工程
(3)设备端SDK使用说明
部署说明
1.将src源码目录下除test文件夹以外的文件添加到工程中
2.根据业务要求,修改include/umacros.h文件中的宏定义
3.在业务流程源文件中包含include/uoffdev_net.h文件
4.ios下可以参考ios/demo/xcode工程
(4)SDK文件下载
目前SDK处于内测阶段,想要使用SDK请发邮件到【pengzhongyang@ut.cn】申请SDK文件。
2.企业级权限
步骤一:注册成为开发者
在使用权限系统之前,开发者需要先注册一个平台的开发者账号,目前平台注册是基于用户中心的。
注册
打开 开发者中心,会自动跳转到用户中心登录注册页面,按指引完成用户中心的注册流程。
登陆
注册完成后,会自动登陆开发者中心。目前权限系统的自动授权功能正在开发中,开发者注册完成之后,需要发邮件到【pengzhongyang@ut.cn】申请开通权限系统的使用权限。
步骤二:对接云端接口
外部应用服务器接入指引
在对接云端接口前,开发者需要先了解个人级权限和企业级权限的区别,在对接前就需要选择好。 具体的差别请查看使用指南。
外部应用服务端开发 | 操作指引 |
开发者注册 | 参考步骤一:注册成为开发者 |
企业级级权限调用API列表(内核层) | https://yapi.utcook.com/project/316/interface/api 使用您注册的开发者账号登陆即可 |
企业级级权限调用API列表(扩展层) | https://yapi.utcook.com/project/346/interface/api/cat_14095 使用您注册的开发者账号登陆即可 |
步骤三:接入APP、设备SDK
(1)在android studio中部署库文件(Android)
1. 将libs目录下所在文件夹拷贝到工程libs目录中,如图:
2. 将java目录下的文件夹拷贝到项目java路径下
3. 在build.gradle文件中android下增加以下代码:
如图所示:
4. 最好rebuild整个项目
5. 具体使用可以参考android/demo工程
(2)在xcode中部署说明(ios)
1. 将src源码目录添加到xcode工程
2. 在接口调用的文件中导入头文件:uoffline_client.h,下图所示仅为示例,应用方需根据源码的路
径自行修改头文件的引用路径
3. 具体使用,可以参考ios/demo工程
五、使用手册
1.个人级权限
(1)简介
为了满足家庭、个人用户使用的通用场景场景,在用户端只定义了三级结构(拥有者、分享者、普通用户),便于灵活的管理和授权。
场景特征:
1.使用的人员数量少,且相对固定
2.管理员接入的设备少,没有频繁管理设备的需求
(2)名词解释
名词 | 说明 |
资源 | 资源是一个抽象的概念,它可以代指现实中的实体设备,也可以代指虚拟的应用、资产等。 |
功能 | 对应资源下的某种能力,如摄像头资源的拍照功能 |
规则 | 指资源的使用范围和限制条件 |
权限 | 权限由资源+功能+规则组成 |
权限分享 | 用户可将自己拥有的权限设定相关规则分享给其他人 |
拥有者 | 用户绑定资源后即成为拥有者。并拥有以下权限:1、拥有设备所有功能点;2、可进行权限分享; |
分享者 | 用户获得用户授权后即成为分享者。并拥有以下权限:1、拥有被分配的设备功能点;2、可进行权限分享 |
(3)角色描述
角色名称 | 描述 |
拥有者 | 用户绑定资源后即成为拥有者。并拥有以下权限:1、拥有设备所有功能点;2、可进行用户授权和使用授权; |
分享者 | 用户获得用户授权后即成为分享者。并拥有以下权限:1、拥有被分配的设备功能点;2、可进行使用授权 |
普通用户 | 仅获得使用授权的用户,拥有以下权限: 1、拥有被分配的设备功能点 |
(4)角色资源权限范围
(5)权限功能详细描述
功能 | 描述 | 场景 |
管理权限绑定与解绑 | 只有应用权限超管和资源拥有者,才拥有绑定与解绑权限绑定:普通用户首次绑定资源时(该资源未有主人),普通用户即成为资源拥有者,自动获得资源拥有者的权限.解绑 : 应用权限超管和资源拥有者可以解绑资源。解绑资源后,此前与该资源有关的一切授权关系都解除 | 某云锁权限管理下有资源拥有者A,资源分享者B。当云锁的资源拥有者进行解绑操作后,该云锁的所有关系都被解除,不再有A资源拥有者和B资源分享者 |
管理权限启用与禁用 | 资源拥有者可以对资源分享者进行授权的启用/禁用 | 某云锁权限管理下有资源拥有者A,资源分享者B。A可以对B进行权限的启用和禁用 |
管理权限修改 | 资源拥有者可以对资源分享者进行权限的修改 | 某云锁权限管理下有资源拥有者A,资源分享者B。B拥有1、2、3功能,A可以修改B拥有的功能 |
管理权限删除 | 资源拥有者可以对资源分享者机型权限的删除 | 某云锁权限管理下有资源拥有者A,资源分享者B。A可以对B进行权限的删除 |
使用权限启用/禁用 | 资源拥有者和资源分享者可以对临时使用者进行临时权限的启用/禁用。支持批量对临时权限的启用/禁用 | 某云锁权限管理下有资源拥有者A,资源分享者B,临时使用者C。A和B可以对C进行临时权限的启用和禁用 |
使用权限修改 | 资源拥有者和资源分享者可以对临时使用者进行临时权限的修改 | 某云锁权限管理下有资源拥有者A,资源分享者B,临时使用者C。C拥有1、2、3功能,A和B可以修改C拥有的功能 |
使用权限删除 | 资源拥有者和资源分享者可以对临时使用者进行临时权限的删除。支持批量对临时权限的删除 | 某云锁权限管理下有资源拥有者A,资源分享者B,临时使用者C。A和B可以对C进行权限的删除 |
查询权限 | 不同的角色可以查询相对应的信息 | |
功能权限 | 功能权限是指功能权限是能够操作该资源功能的权限。优特云会提供一个API,由开发者根据自己的资源和功能,自己定义有哪些功能权限。优特云只管理资源与用户关系、用户与权限关系。 | 如云锁的开关;如吸顶灯的亮度 |
(6)分享权限的条件和流程
分享权限实质是用户进行授权的过程,目前分为两类:
1.用户权限分享:接收到用户权限分享的用户,称为分享者。拥有该资源的全部管理权限和部分使用权限;
2.使用权限分享:接收到使用权限分享的用户,称为普通用户。拥有该资源的部分使用权限,且有规则的限制!
分享使用权限可以根据以下条件进行分享,目前使用权限设定了四个条件:永久、限时、限次、循环:
永久 : 永久拥有权限,无限制使用;
限时 : 规定某个用户在某段时间使用【字段要求:生效时间/失效时间=年/月/日 时:分】;
限次 : 规定某个用户只能使用几次功能;
循环 : 规定用户在某个循环条件下使用【字段要求:周一到周日(多选);生效时间/失效时间 = 时:分;开始时间/结束时间 = 年/月/日】;
场景举例: 小明是云锁的资源拥有者,他请了保姆A在四月份的每周一来打扫家里的卫生,那他就可以这样设置:给保姆A授予了使用权限,且有以下限制:
1.只能在四月份的每周一使用(循环限制)
2.且每天只能使用1次(限次使用)
(7)使用权限的消耗逻辑
有次数限制的实例的消耗规则:
1.优先消耗最近一个准备过期的实例(按结束时间判断)
2.结束时间一致or没有设定结束时间,按授权时间判断,先进先出
2.企业级权限
(1)简介
与个人级权限不同的是:企业级权限是基于组织管理资源。
可以满足办公、酒店/公寓、物流、校园、企业等场景
场景特征:
1.使用的人员数量多,且人员经常改变
2.管理员接入的设备多,且需要频繁管理多台设备
(2)名称解释
名称 | 解释 |
资源 | 资源是一个抽象的概念,它可以代指现实中的实体设备,也可以代指虚拟的应用、资产等 |
功能 | 对应资源下的某种能力,如摄像头资源的拍照功能 |
规则 | 指资源的使用范围和限制条件 |
权限 | 权限由资源+功能+规则组成 |
组织 | 组织是由组织节点组成的;是一个具有树形结构属性的抽象概念 |
(3)角色
企业级权限系统中有三种角色:
开发者:负责创建组织、定义资源类型、功能
管理员:拥有组织的部分管理权限
普通用户:隶属于某个组织
(4)组织管理
a.组织定义:
组织对应着企业中层级明确、权责分明的部门架构,是用以满足企业主高效管理权限的需求。 组织具有严格的树形结构属性。
b.创建组织:
组织由开发者创建,开发者创建组织时,需定义组织信息
c.管理节点:
组织管理者可以管理节点,包括创建、删除、查询、修改
d.组织的启用、禁用
开发者可以控制组织的启用、禁用。 禁用后,开发者只能查看组织,不能操作组织
e.组织的删除
组织的删除只能由开发者删除
(5)资源类型管理
a.资源类型的定义
资源类型是一个模板的概念,用于开发者批量授。
资源类型由资源类型id,功能,传递规则,使用条件组成,同一种资源只要关联资源类型,就获得了资源类型下的功能、传递规则、使用条件的属性。
b.功能
功能对应资源下的某种能力,如摄像头资源的拍照功能。功能key由开发者定义。
c.传递规则
传递规则: 传递规则是指赋予资源传递的规则
向上传递(向上传递几层):某个组织节点向上传递规则;
向下传递(向下传递几层):某个组织节点向下传递规则。
d.使用条件
企业级权限目前设定了三个条件:永久、限时、循环:
永久 : 永久拥有权限,无限制使用
限时 : 规定某个用户在某段时间使用【字段要求:生效时间/失效时间=年/月/日 时:分】
循环 : 规定用户在某个循环条件下使用【字段要求:周一到周日(多选);生效时间/失效时间 = 时:分;开始时间/结束时间 = 年/月/日】
场景举例: 小明是云锁的资源拥有者,他请了保姆A在四月份的每周一来打扫家里的卫生,那他就可以这样设置:给保姆A授予了使用权限,且有以下限制:
1.只能在四月份的每周一使用(循环限制)
(6)资源管理
组织管理者可以管理资源,包括注册、删除、查询 资源的注册提供两种注册方式:
- 单个注册
- 批量注册
注册资源时,需根据资源类型来注册。
(7)用户管理
组织管理者可以管理用户,包括查询、绑定
a.用户的注册、删除、修改通过用户中心来完成,提供两种注册方式:
- 单个注册
- 批量注册
b.用户的绑定 将某个用户绑定在组织中。
(8)子节点管理员
a.增加子节点管理员,且一个节点可以拥有多个管理员
b.子节点管理员与开发者管理同一个资源池
c.子节点管理员权限具体如下:
- 开本节点锁设备(默认)
- 开下级节点锁设备(默认)
- 管理本节点锁(可配置)
- 管理本节点用户(可配置)
- 管理本节点管理员(可配置)
- 增删下级节点(可配置)
- 管理下级节点用户(可配置)
- 管理下级节点锁(可配置)
- 离线开锁权限(可配置)
3.权限判断
(1)概述
权限判断指的是根据权威中心(云端的签名中心或设备端的权限文件),判断用户是否对某个资源拥有操作权限。 本章节主要阐述权限判断逻辑与流程。
(2)权限判断流程
权限判断分为两种方式,
一是在线判断,通过云服务器的鉴权,下发控制指令到设备端;
二是离线判断,通过设备端自身的鉴权,判断是否执行控制指令。
在判断传输过程中,运用到非对称加密算法,确保传输过程中,指令的安全性。 在加密的过程中,涉及到两对密钥,分别是:
用户密钥 : 用户离线判断流程的加密解密
设备密钥 : 用于在线判断流程的加密解密
4.权限同步
(1)概述
权限同步一般用于云端和离线设备权限文件版本的统一(离线设备的场景),以确保权限的一致性和有效性。
(2)权限文件
权限文件根据个人级和企业级的设备,文件里包含的内容不同 个人级权限文件当中,只存放用户信息,
(3)同步流程
在离线判断前,需要判断离线设备自身的权限文件是否为最新版本,如果非最新版,则需要更新文件。
5.权限转移
(1)概述
某些行业中,会遇到比较复杂的业务流程,其中会涉及到多次的权限转移。优特云提供了独有的用户语言服务流程定制,为复杂的业务流程,提供灵活多变的方案,满足客户需求。
实现过程:
1.客户首先需要确定自身的业务流,并且分析业务当中哪个模块是需要有权限转移;
2.优特云会根据客户的业务分析,提供对应的流程定制,进行相关的用户语言配置;
3.配置完成后,流程的节点会根据用户语言的配置,执行相对应的动作,最终实现预期效果。
(2)应用场景
海关锁的权限管理过程,就是一个复杂的权限转移过程,我们通过用户语言的特性,满足以下特殊的业务流程。
六、文档更新日志
日期 | 描述 |
2020-03-16 | 【创建】【权限系统使用手册 】 |
2020-05-06 | 【增加】【企业级权限 】 |
2020-05-22 | 【增加】【产品版本 】 |
2020-11-16 | 【优化】【文字描述与排版】【增加】【企业级权限快速入门】 |