鉴权认证

最近更新时间:2021-04-06 01:55:58

SDK 提供二种鉴权机制:AppID 鉴权、Token鉴权。这二种鉴权机制的区别如下:

为保证通信安全,当用户登录 RTM 系统时,anyRTC 需要对其鉴权。anyRTC 提供如下鉴权方案,你可以根据自己的实际使用场景,选择合适的鉴权方式:

鉴权方案场景
使用 App ID 鉴权低安全需求场景
同时使用 App ID 和 RTM Token 鉴权安全性升级场景

为提高项目的安全性,anyRTC 会逐步取消对 App ID 鉴权方案的支持,建议你将所有项目升级至使用 RTM Token 鉴权。

使用 App ID 鉴权

开发者在 anyRTC 控制台 注册账号后,可以创建多个项目,每一个项目的唯一标识就是 App ID。如果有人非法窃取了你的 App ID,他就可以在自己的项目中使用你的 App ID。因此,只使用 App ID 鉴权,安全性较低,我们推荐只在测试环境,或对安全要求不高的场景里使用 App ID 鉴权。

为提高项目的安全性,anyRTC 会逐步取消对 App ID 鉴权方案的支持,建议你将所有项目升级至使用 RTM Token 鉴权。

参考如下步骤,获取并使用 App ID:

  1. 进入控制台,按照屏幕提示注册账号并登录控制台。详见 注册与登录

  2. 点击左侧导航栏的项目管理 图标进入 项目管理 页面。

  3. 点击创建按钮。

  1. 在弹出的对话框内输入项目名称,选择 APP ID 为鉴权机制,并点击提交

  2. 项目创建成功后,你会在项目列表中看到刚刚创建的项目。点击图中按钮 查看并复制该项目对应的 App ID。

  1. 在初始化客户端时,anyRTC 会需要你填入 App ID。将你获取到的 App ID 直接填入即可。

  2. 如果你需要升级至 RTM Token 鉴权方案,点击编辑进入编辑项目页面即可启用 App 证书。

只有在创建项目后,不打开权限密钥 ,你才会看到 无权限密钥无权限密钥表示使用 App ID 鉴权。

使用 RTM Token 鉴权

Token 是一种动态密钥,通过 App ID、权限密钥、用户名和 Token 有效时间戳等参数生成,安全性较高。在正式生产环境等对安全要求较高的场景中,我们推荐使用 RTM Token 鉴权。

生成 RTM Token

RTM Token 需要在你的服务端生成。参考如下步骤,在 anyRTC 控制台获取 App ID、启用 权限密钥,然后调用 API 生成 RTM Token。

1. 获取 App ID

参考上文步骤获取 App ID

2. 启用 权限密钥

权限密钥是 anyRTC 控制台为开发项目生成的字符串。

通常 权限密钥在启用5分钟后生效。

将你的 权限密钥保存在服务器端,且对任何客户端均不可见。

参考如下步骤启用权限密钥:

  • 如果你在创建项目后,在编辑项目页面,你可以点击启用权限密钥。

3. 生成 RTM Token

我们在 GitHub 上提供了一个开源的 anyRTC Dynamic Key 仓库。./<language>/src 文件夹下包含生成各种版本的 Dynamic key 和 RTM Token 的源码。你可以使用 RtmTokenBuilder 生成 RTM Token。./<language>/sample 文件夹下包含用于演示 RTM Token 生成的示例代码。RtmTokenBuilderSample 可以用来演示如何生成 RTM Token。

RTM Token 采用业界标准化的 HMAC/SHA1 加密方案,在 Node.js、Java、Python、C++ 等绝大多数通用的服务端开发平台上均可获得所需加密库。具体加密方案可参考 Authentication code

RtmTokenBuilder 参数说明(C++)

static std::string buildToken(const std::string& appId,
                                const std::string& appCertificate,
                                const std::string& userAccount,
                                RtmUserRole userRole,
                                uint32_t privilegeExpiredTs = 0);
参数描述
appId你的项目 App ID。
appCertificate你的项目 权限密钥。
userAccountRTM 系统用户 ID。
userRole用户角色。暂时只支持一种角色,请使用默认值 Rtm_User
privilegeExpiredTs此参数暂不生效。你无需设置此参数。

每个 RTM Token 的有效期都是 24 小时。

使用 RTM Token

你可以参考如下步骤使用 RTM Token:

  1. 客户端需要 RTM Token 鉴权服务时,向服务端发送获取 RTM Token 的请求。
  2. 服务端收到请求后 RTM Token 生成器生成一个 RTM Token,然后将生成的 RTM Token 发送给客户端。
  3. RTM Token 具有有效期。在 RTM Token 失效后,你需要在客户端调用renewToken方法更新 RTM Token,并使用新的 RTM Token 登录 RTM 系统。