进行角色鉴权可以解决用户篡改RTC API调用逻辑,非法发布音视频流,防止没有推流权限的用户发布音视频流。通过阅读本文,您可以了解到角色鉴权的方法。
使用规则
- 角色鉴权目前仅在互动模式下生效。
- app_server计算token时,需要带上role参数的值,方法为在原来的字符串末尾增加role的值,再对整个字符串做加密。
- 主播角色入会时,必须授予鉴权角色为pub,否则无法入会。
- 观众角色入会时,可以授予角色为pub或者sub,授予pub权限的观众角色可以切换为主播角色。
- sub权限的观众角色,在切换为主播之前,需要向app_server请求pub角色的token,并且把新返回的token、role、nonce、timestamp、userid参数通过
RefreshAuthInfo
传入到SDK内,再调用setclientrole
来切换成主播角色。
实现方法
操作步骤
- 入会前,根据业务需求,向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****×tamp=1614738724",
"password": "eeb8407849aeb52c1f9748f3652bccbed31b0a11e0d75dbaebb60fef42a2****"
},
"gslb": "https://pgslb.rtc.aliyuncs.com",
"agent": "pagent.rtc.aliyuncs.com",
"description": "Janus - Janus - 预发"
},
"server": "1614565924571"
}
将返回的roletoken
的值填入入会参数role中。
- 根据业务需求,主播角色需要请求
tokenRole = pub
的鉴权信息,为了避免观众非法破解获取推流的能力,观众角色可以请求tokenRole = sub
的鉴权信息。
- 入会后,如果需要切换角色,要再次向app_server请求相应的鉴权信息,获取到的信息通过
RefreshAuthInfo
接口传入到SDK内部。