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

如何获取Azure Web PubSub REST API认证用JWT Bearer令牌

Azure Web PubSub 服务端REST API鉴权实现方案

找不到对应AAD权限项不是配置疏漏,Azure Web PubSub数据平面API的鉴权逻辑和Microsoft Graph存在差异,目前没有把权限项放到应用注册的默认权限选择列表中,以下是两种可直接落地的实现方式:


方案1:Access Key签名生成令牌(推荐,POC/生产服务端调用均适用)

这是官方原生支持的服务端鉴权方式,不需要走AAD应用注册流程,配置步骤最少:

  • 提取访问密钥:进入Azure门户中你的Web PubSub资源页,在「密钥」菜单下复制Primary Key或Secondary Key备用,两个密钥效力一致,支持定期轮换。
  • 生成合规JWT令牌:
    令牌要求:
    • 签名算法使用HS256,签名密钥为上一步复制的Access Key
    • Payload必须包含aud声明,固定值为https://webpubsub.azure.com
    • 建议添加exp声明设置过期时间,服务端场景设置15-60分钟有效期即可,降低令牌泄露风险
      PHP侧可以直接使用通用JWT库生成,示例代码:
    require 'vendor/autoload.php';
    use Firebase\JWT\JWT;
    
    $webPubSubAccessKey = '从Azure门户复制的访问密钥';
    $payload = [
        'aud' => 'https://webpubsub.azure.com',
        'exp' => time() + 3600 // 1小时有效期
    ];
    $authToken = JWT::encode($payload, $webPubSubAccessKey, 'HS256');
    
  • 调用接口:发起REST请求时在请求头携带Authorization: Bearer <生成的authToken>即可,以向指定群组发送消息为例,请求格式如下:
    POST /api/hubs/[你的Hub名称]/groups/[目标群组名]/:send?api-version=2023-07-01
    Host: [你的Web PubSub资源名].webpubsub.azure.com
    Authorization: Bearer [生成的令牌]
    Content-Type: application/json
    
    {"content": "待发送的消息内容"}
    

方案2:AAD应用注册鉴权(适合统一AAD权限管控场景)

如果你需要沿用现有AAD鉴权体系,不需要在应用注册的API权限页搜索服务,直接通过IAM角色分配即可完成授权:

  • 先完成常规应用注册,记录对应的客户端ID、租户ID、客户端密钥
  • 进入Web PubSub资源的「访问控制(IAM)」菜单,选择添加角色分配,按需选择对应内置角色:
    • Web PubSub Service Publisher:仅拥有发送消息权限,满足你当前的发消息需求
    • Web PubSub Service Owner:拥有所有数据平面API操作权限,可管理连接、群组、发送消息
      角色分配的主体选择你之前注册的应用,保存后等待3-5分钟权限同步生效
  • 获取AAD访问令牌时,将资源范围(v2.0端点为scope参数,v1.0端点为resource参数)设置为https://webpubsub.azure.com/.default,拿到的令牌即可直接用于调用Web PubSub REST API。

选型建议:POC阶段优先选择方案1,无权限同步等待时间,配置成本最低;生产环境如果你的服务体系没有强依赖AAD统一鉴权,也优先选方案1,密钥可通过密钥保管库存储、定期轮换,安全性足够。如果你的全服务已经接入AAD做统一权限管控,再选择方案2即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:21:33