Azure Web PubSub客户端无加入组权限问题排查求助
解决方案:Azure Web PubSub客户端令牌缺少角色权限问题
问题原因
你使用的api-version=2021-10-01版本的Generate Client Token接口,不支持通过URL查询参数传递roles参数——这就是为什么你在URL里指定了roles=webpubsub.joinLeaveGroup,但解码后的JWT payload里完全没有角色信息,最终导致客户端无法加入组的核心原因。
两种修复方式
方式1:升级API版本到2023-07-01(或更高)
2023-07-01及之后的API版本支持通过URL查询参数传递roles,只需修改请求URL中的api-version即可:
https://<my-pubsub-instance>.webpubsub.azure.com/api/hubs/<hub_name>/:generateToken?userId=5753&roles=webpubsub.joinLeaveGroup&api-version=2023-07-01
生成的令牌解码后,payload中会自动包含roles字段,客户端就能获得加入/离开组的权限。
方式2:在2021-10-01版本下使用请求体传递角色
如果需要保留旧API版本,必须通过POST请求的JSON请求体来指定角色信息,而非URL参数:
- 移除URL中的
userId和roles参数,请求URL改为:https://<my-pubsub-instance>.webpubsub.azure.com/api/hubs/<hub_name>/:generateToken?api-version=2021-10-01 - 发送POST请求时携带以下JSON请求体:
{ "userId": "5753", "roles": ["webpubsub.joinLeaveGroup"] }
验证结果
修复后重新生成令牌,解码后的payload应包含roles字段,示例如下:
{ "sub": "5753", "nbf": 1707417893, "exp": 1707421493, "iat": 1707417893, "iss": "https://webpubsub.azure.com", "aud": "https://<my-pubsub-instance>.webpubsub.azure.com/client/hubs/<hub_name>", "roles": ["webpubsub.joinLeaveGroup"] }
此时客户端连接后即可正常加入目标组。
内容的提问来源于stack exchange,提问作者Vansh
相关产品推荐
相关产品推荐

