【问题标题】:Agora Security Token Generation (Golang)Agora 安全令牌生成 (Golang)
【发布时间】:2020-06-25 17:27:39
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: security go privileges agora.io agora-web-sdk-ng


    【解决方案1】:

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

    如果您查看 Agora Token Builder (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)
        }
    

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

    此处设置的权限旨在让 Agora 后端知道用户可以在频道中执行哪些操作,范围从基本的joinCahnnelpublishStreampublishVideoCdn

    可用权限:

    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
    )
    

    注意:默认情况下不强制执行令牌特权,因此您必须提交 Jira 票证 (https://agora-ticket.agora.io) 才能请求在您的帐户上启用它。

    【讨论】:

    • 谢谢!那么 src 目录下的 RtcTokenBuilder.go 真的是用来举例说明如何使用 AccessToken.go 的吗?也许你应该把它移到示例目录中。
    • 它是一个基本但实用的如何构建令牌服务器的示例,所以我不确定它是否会以这种方式进行更改,但总的来说令牌非常重要,我会与团队内部,这样我们就可以改进这个过程,从而减少未来的混乱。
    • @JoeLin,我说错了...... role.attendee 是一个旧角色,以前使用类似于发布者/管理员角色。在 Golang 示例的第 32 行,它建议使用 2 个角色,订阅者和发布者。订阅者只能加入频道,发布者是获得上述所有角色的那个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2014-09-12
    • 2015-11-16
    • 1970-01-01
    • 2012-01-10
    • 2010-10-24
    相关资源
    最近更新 更多