security - Agora安全 token 生成(Golang)

标签 security go privileges agora.io

查看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 中执行的操作,范围从基本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
)

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/

相关文章:

go - 使用/pkg/errors 与 golang 1.13 格式动词 %w 一起处理错误

C# 即使具有管理员权限也无法访问系统文件

x86 - 为什么 x86 分页没有权限环的概念?

ios - 有什么方法可以保护 IPA 中的图形/声音数据?

c# - 包含一个数字以自动生成密码

没有结构的json解码

go - 为什么这个 OrDone Channel Implementation 从 Done Channel 收到两次?

security - 访问 token 是否加密

java - 如何在客户端哈希密码?如何从java设备(android)传输密码?

python - 作为另一个用户(例如 root)运行 Python 例程的 pythonic 方式是什么?