You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure WebPubSubServiceClient.GetClientAccessUri分配所有群组权限?

为Azure WebPubSub客户端授予所有群组权限的解决方案

使用Azure.Messaging.WebPubSub.Clients SDK创建Azure WebPubSub服务客户端的基础代码如下:

var serviceClient = new WebPubSubServiceClient("<connectionstring>", "hubName");

通过该客户端生成临时令牌以初始化WebSocket客户端的示例:

var url = client.GetClientAccessUri(roles: new string[]
    { $"webpubsub.sendToGroup.mygroup", $"webpubsub.joinLeaveGroup.mygroup" }).AbsoluteUri;
var wsClient = new WebPubSubClient(new Uri(url));

上述代码初始化的客户端仅拥有操作"mygroup"群组的权限,可正常执行如下操作:

wsClient.GroupMessageReceived += eventArgs =>
{
    Console.WriteLine($"Receive group message from {eventArgs.Message.Group}: {eventArgs.Message.Data}");
    return Task.CompletedTask;
};
await wsClient.StartAsync();
await wsClient.JoinGroupAsync("mygroup");

若要为客户端授予当前hub内所有群组的操作权限,你尝试的两种方式均不符合Azure WebPubSub的权限规则,正确的做法是使用不带群组后缀的角色名称:

var url = client.GetClientAccessUri(roles: new string[]
    { "webpubsub.sendToGroup", "webpubsub.joinLeaveGroup" }).AbsoluteUri;
var wsClient = new WebPubSubClient(new Uri(url));

webpubsub.sendToGroup角色允许客户端向当前hub下的任意群组发送消息,webpubsub.joinLeaveGroup角色允许客户端加入/退出当前hub下的任意群组,这样初始化后的客户端就拥有了所有群组的操作权限。

内容的提问来源于stack exchange,提问作者Karl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 10:27:24