进行角色鉴权可以解决用户篡改RTC API调用逻辑,非法发布音视频流,防止没有推流权限的用户发布音视频流。通过阅读本文,您可以了解到角色鉴权的方法。

使用规则

  • 角色鉴权目前仅在互动模式下生效。
  • app_server计算token时,需要带上role参数的值,方法为在原来的字符串末尾增加role的值,再对整个字符串做加密。
  • 主播角色入会时,必须授予鉴权角色为pub,否则无法入会。
  • 观众角色入会时,可以授予角色为pub或者sub,授予pub权限的观众角色可以切换为主播角色。
  • sub权限的观众角色,在切换为主播之前,需要向app_server请求pub角色的token,并且把新返回的token、role、nonce、timestamp、userid参数通过RefreshAuthInfo传入到SDK内,再调用setclientrole来切换成主播角色。

实现方法

001

操作步骤

  1. 入会前,根据业务需求,向app_server请求相关信息,返回示例代码如下所示:
    {
        "code": "0",
        "data": {
          "appid": "pdtk****",
          "userid": "4b73ca5c****",
          "nonce": "AK-1cdf3ef44a794eec9b208ad95b8d****",
          "timestamp": "1614738724",
          "roleToken": "sub",
          "token": "eeb8407849aeb52c1f9748f3652bccbed31b0a11e0d75dbaebb60fef42a2****",
          "turn": {
            "username": "4b73ca5c1226?appid=pdtk****&channel=12345&nonce=AK-1cdf3ef44a794eec9b208ad95b8d****&timestamp=1614738724",
            "password": "eeb8407849aeb52c1f9748f3652bccbed31b0a11e0d75dbaebb60fef42a2****"
          },
          "gslb": "https://pgslb.rtc.aliyuncs.com",
          "agent": "pagent.rtc.aliyuncs.com",
          "description": "Janus - Janus - 预发"
        },
        "server": "1614565924571"
    }

    将返回的roletoken的值填入入会参数role中。

  2. 根据业务需求,主播角色需要请求tokenRole = pub的鉴权信息,为了避免观众非法破解获取推流的能力,观众角色可以请求tokenRole = sub的鉴权信息。
  3. 入会后,如果需要切换角色,要再次向app_server请求相应的鉴权信息,获取到的信息通过RefreshAuthInfo接口传入到SDK内部。