用户希望数据保密并免受入侵。在 webRTC 中,我们看到大量敏感数据通过网络传播,因此,保护用户数据安全就变得非常重要。那我们应该提供哪种方法更适合确保用户数据安全呢?
答案是使用Token。Token是用户加入RTC频道或登录RTM系统时用于认证的动态密钥,它是一个定时字符串,需要在设定的时间间隔即24 小时以内重新生成。
在本教程中,我们将学习如何生成自己的Token,并从服务器中获取,然后使用生成的Token加入频道。你可以部署自己的服务器来生成Token,也可以使用本示例,在本教程中,我们将使用此示例来制作我们的Token服务器。你可以按照 README.md
文件中的说明轻松部署同一台服务器。
要求
- Agora 开发者账号(详见声网Agora注册指南)
- Flutter SDK
- Agora Token服务器
我们将使用视频通话Demo作为我们的基础,在此基础上,我们将添加Token服务以加入频道。你可以在声网Blog阅读更多解决方案。
与Token连接
生成Token服务器很简单,只需使用以下字段向你的服务器发送 GET 请求:
- 频道名称:每个Token都与一个频道名称相关联。要进入一个频道,所有用户都应该持有相同的Token值。
- UID:UID 是唯一用于区分频道中每个用户的整数值。将 0 传递给 UID ,这允许 Agora 从服务器端为你生成一个 UID。
- 截止时间:由于Token持有动态值,因此需要等一会再刷新。
这个值需要在你在加入频道之前生成,因为你需要把它传递给 joinChannel()
方法。
生成Token
注意:如果你正在运行 android 模拟器并尝试访问在本地运行的token服务器,可使用 url: http : //10.0.2.2。为什么?
现在你可以在加入 joinChannel()
方法之前调用 getToken()
函 数,具体如下所示:
await getToken();
await _engine.joinChannel(token, widget.channelName, null, 0);
保持连接
Token是一个动态值,有效期最长为 24 小时,24小时之后,就需要重新生成该值,你在24小时内可以使用任何帧。在这期间,你需要生成一个新的Token
当用户的Token还有不到30秒就到期时,Agora 会回调 tokenPrivilegeWillExpire()
来注册该Token。我们使用这个回调,然后通过再次调用我们的 getToken()
函数来生成一个新的Token。有了新的Token值后,我们需要使用它来保持连接,这可以通过调用 renewToken()
方法来完成。
更新Token
结论
安全性对于任何 webRTC 应用程序都是必不可少的。当前运行或正在开发中的任何应用程序都应使用Token。使用本教程中给出的方法,你可以快速向应用程序添加Token并确保你应用程序安全性。
点击GitHub仓库获取此应用程序的完整代码。
原文作者 Meherdeep Thakur
原文链接 https://www.agora.io/en/blog/connecting-to-agora-with-tokens-flutter/