Agora 安全令牌生成(Golang)

Agora Security Token Generation (Golang)

查看 Agora 的 Token 生成(https://docs.agora.io/en/Interactive%20Broadcast/token_server_nodejs?platform=Node.js)。

我们需要在生成令牌时提供用户的角色。在 Go API 中有 4 个角色定义:与会者、发布者、订阅者和管理员。

如果令牌是使用 4 个角色中的任何一个生成的,它们有何不同?与会者与订阅者有何不同,发布者与管理员有何不同?

谢谢

您所指的 Role 是一个任意结构,创建用于建立可用于设置权限的可能用户角色的示例层次结构。

如果您查看 Agora 令牌生成器(Golang example), on Line 42 它使用角色分配一组权限。

    if (role == RoleAttendee) || (role == RolePublisher) || (role == RoleAdmin) {
        token.AddPrivilege(accesstoken.KPublishVideoStream, privilegeExpiredTs)
        token.AddPrivilege(accesstoken.KPublishAudioStream, privilegeExpiredTs)
        token.AddPrivilege(accesstoken.KPublishDataStream, privilegeExpiredTs)
    }

在代码中,每个角色都获得相同的权限(这在生产环境中通常是无用的)因此您需要更新代码以拥有您想要的任何用户角色喜欢以便为该令牌设置适当的权限。

这里设置的权限是为了让Agora后台知道用户在频道里可以做什么,从最基本的joinCahnnelpublishStream再到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.