为了使用 Netless 互动白板服务,你可以在管理控制台中创建项目。在管理控制台登陆之后,在左侧侧边栏选择项目管理,右侧即可看到所有项目。你可以在这个页面创建新项目,或修改现有项目的配置。
你可以创建多个项目,这些项目的权限是彼此隔离的。
你可以创建一个生产模式项目和一个开发模式项目。让开发只能拿到开发模式项目的权限,让运维拿到生产模式项目的权限。从而做到开发环境与生产环境彼此隔离。
在项目右侧点「配置」,会跳转到另一个页面。该页面可以查看项目的基本信息(或修改)。比较关键几个信息如下。
在配置页面最下方,可以「禁用项目」(将项目状态设置为禁用)。该操作可以将所有属于该项目的所有资源全部禁用。该操作是可以撤销的,你可以将被禁用的项目重新开启。
「禁用项目」会将该项目下的所有白板房间、白板录像、PPT 转化任务全部禁用。如果该项目对应了生产环境,该操作可能会造成极其严重的后果,即你的线上部分服务可能会被中断。请在确认已理解了「禁用项目」的后果后再执行该操作。
每一个项目都有自己的 AppIdentifier
作为标识符。在管理控制台左侧侧边栏选择项目管理,右侧的项目列表中,可以找到你的项目的 AppIdentifier
。
在客户端(Web、iOS、Android)使用 SDK 时,需要将项目 AppIdentifier
作为启动参数传入。
JavaScript
new WhiteWebSdk({
appIdentifier: "从管理控制台复制的 AppIdentifier",
...,
});
Objective-C - iOS
WhiteSdkConfiguration *config = [[WhiteSdkConfiguration alloc] initWithApp:@"从管理控制台复制的 AppIdentifier"];
Java - Android
WhiteSdkConfiguration sdkConfiguration = new WhiteSdkConfiguration("从管理控制台复制的 AppIdentifier", true);
你可以在项目配置页中查看或创建访问密钥。访问密钥由一对 AK
、SK
组成,靠它们,你可以签出 Token。
Netless 互动白板的几乎所有活动都涉及到使用 Token 鉴权。我们的云服务通过你签出的 Token 来确认发起操作的人已获得你的授权。
Token 的权限来访问密钥对。你可以将访问密钥对删除或禁用,这会让该访问密钥对签出的所有 Token 失效。你也可以将项目本身封禁,该操作也能令该项目下所有 Token 失效。
对于特定 Token 要从两个维度来理解。第一,要确定该 Token 是什么哪种类型?Token 可以是 sdkToken
、roomToken
、taskToken
,Netless 互动白板的不同 API 需要不同类型的 Token,调用前应该根据需要生成。第二,要确定 Token 包含哪些字段。字段填写不同值,会影响 Token 的行为。不同 Token 类型会包含其特有的字段。
不论哪种类型的 Token,都包含如下公共字段。
字段名 | 值类型 | 描述 |
---|---|---|
role |
枚举 reader、writer、admin | 权限对应的角色 |
expireAt |
正整数时间(毫秒) | 过期时间点,unix 时间戳(毫秒) |
其中 expireAt
是可选字段,如果 Token 不包含该字段,则表明该 Token 永不过期。你可以在构造 Token 时,将参数 lifespan
设为 0
来签出永不过期的 Token。
永不过期的 Token 可能为你的业务带来安全隐患。想象一下,如果某人获取了一个权限很高的 Token,他就可以用该 Token 危害你的系统,而你将该 Token 失效的唯一手段只有禁用该 Token 的访问密钥对——这是一个副作用极大的操作。
除非迫不得已,不要签出永不过期的 Token。在业务服务器,你可以只有在需要时,签出一个存在时间较短的临时 Token,使用完之后就立即释放。对于必须下发到客户端的 Token,你可以根据业务场景预估一下客户端使用该 Token 的最长期限,并将这个最长期限设为 Token 的生存时间。不要把 Token 存入数据库或写入文件。每当有需要时,用访问密钥对直接签出,而不是从数据库或文件读取。
roomToken
roomToken 与特定白板房间绑定。你可以签出 role=admin
的 roomToken 来对房间进行管理(如踢掉房间成员、封禁房间、删除房间等)。你也可以签出 role=writer
或 role=reader
的 roomToken 下放到客户端(或前端)以便让他们能以特定身份加入该房间。
不同房间的 roomToken 彼此不互通。具体用法请参考其他 API 文档。roomToken 包含自己特有的字段。
字段名 | 值类型 | 描述 |
---|---|---|
uuid |
字符串 | 房间的 UUID |
taskToken
taskToken 和特定的转化任务绑定。你可以用它查看转化任务的进度,或进行取消转化任务的操作。不同的转化任务的 taskToken 彼此不互通。具体用法请参考其他 API 文档。taskToken 包含自己特有的字段。
字段名 | 值类型 | 描述 |
---|---|---|
uuid |
字符串 | 任务的 UUID |
sdkToken
sdkToken 的级别在之前介绍的 Token 之上。它可以直接代替其他 Token 使用。在业务服务端调用 Netless 的 API 时,可以直接用 sdkToken 来进行任何操作,而无需担心因为权限而被拦住。
不要将 sdkToken 泄漏到客户端(或前端),也不要将 sdkToken 存入数据库或写入配置文件。应该在使用时临时签出,过期时间尽可能设短。sdkToken 的权限级别很高,泄漏后会危害业务安全。
也可以直接在管理控制台的项目配置页点击「生成 sdkToken」按钮。这会生成一个 role=admin
且永久有效的 sdkToken。
你可以利用访问密钥对(即 AK
和 SK
)签出任何你想要的 Token。
出于安全方面的考虑,只有服务器能拿到 AK
、SK
,只能在服务器签出 Token。绝对不要将 AK
、SK
发送给客户端、前端,也不要将它们写死在代码里。至少,你得让业务服务器 App 从配置文件中读取 AK
、SK
。
访问密钥对是你的团队的重要资产,倘若有恶意人士拿到了你的线上业务的访问密钥对,他可以严重危害到你的线上业务。为了终止恶意人士的侵害,你只能禁用访问密钥对,而这必将导致其他正常运行的线上业务被禁止。
所以,为了避免陷入这种进退维谷的局面,你应该避免不可靠的人士获得生产环境的访问密钥对。
你可以在服务端用如下两种方式签出 Token。