查看Agora(https://docs.agora.io/en/Interactive%20Broadcast/token_server_nodejs?platform=Node.js)的 token 生成。
生成 token 时,我们需要提供用户角色。在Go API中,有4个角色定义:参与者,发布者,订阅者和管理员。
如果使用四种角色中的任何一种生成 token , token 会有什么不同?与会者与订阅者有何不同,发布者与管理员有何不同?
谢谢
最佳答案
您所指的Role
是创建的任意结构,用于建立示例性可能的用户角色层次结构,这些角色可用于设置特权。
如果您查看Agora token 生成器(Golang example),在Line 42上,它将使用“角色”来分配一组特权。
if (role == RoleAttendee) || (role == RolePublisher) || (role == RoleAdmin) {
token.AddPrivilege(accesstoken.KPublishVideoStream, privilegeExpiredTs)
token.AddPrivilege(accesstoken.KPublishAudioStream, privilegeExpiredTs)
token.AddPrivilege(accesstoken.KPublishDataStream, privilegeExpiredTs)
}
在代码中,每个角色都具有相同的特权(通常在生产环境中是没有用的),因此您需要更新代码以具有所需的任何用户角色,以便为该 token 设置适当的特权。此处设置的特权旨在让Agora后端知道用户可以在 channel 中执行的操作,范围从基本
joinCahnnel
到publishStream
到publishVideoCdn
。可用特权:
type Privileges uint16
const (
KJoinChannel = 1
KPublishAudioStream = 2
KPublishVideoStream = 3
KPublishDataStream = 4
KPublishAudiocdn = 5
KPublishVideoCdn = 6
KRequestPublishAudioStream = 7
KRequestPublishVideoStream = 8
KRequestPublishDataStream = 9
KInvitePublishAudioStream = 10
KInvitePublishVideoStream = 11
KInvitePublishDataStream = 12
KAdministrateChannel = 101
KLoginRtm = 1000
)
NOTE: token priveleges are not enforced by default, so you will have to file a Jira ticket (https://agora-ticket.agora.io) to make the request to enable it on your account.
关于security - Agora安全 token 生成(Golang),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62581036/