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

Azure.Messaging.ServiceBus/EventHubs中CreateSharedAccessSignatureTokenProvider替代方案咨询

Azure Service Bus与Event Hubs新SDK中生成SAS令牌的替代方案

在新的Azure.Messaging.ServiceBus和Azure.Messaging.EventHubs SDK中,确实没有直接对应旧版CreateSharedAccessSignatureTokenProvider的API,但官方提供了专门的Builder类来生成SAS令牌,实现相同的远程授权功能,两者的处理逻辑一致:

一、Azure Service Bus的实现方式

使用ServiceBusSharedAccessSignatureBuilder类构造SAS令牌,示例代码如下:

using Azure.Messaging.ServiceBus;

var sasBuilder = new ServiceBusSharedAccessSignatureBuilder
{
    KeyName = "你的SAS密钥名称",
    SharedAccessKey = "你的SAS密钥值",
    Endpoint = new Uri("sb://你的服务总线命名空间.servicebus.windows.net/"),
    EntityPath = "目标队列或主题名称", // 若需限制令牌仅访问特定实体则填写,全局令牌可省略
    ExpiresOn = DateTimeOffset.UtcNow.AddHours(1) // 设置令牌过期时间
};

// 生成可分发给远程客户端的SAS令牌
string sasToken = sasBuilder.BuildSignature();

远程客户端拿到令牌后,可通过AzureSasCredential创建Service Bus客户端:

var serviceBusClient = new ServiceBusClient(
    "sb://你的服务总线命名空间.servicebus.windows.net/",
    new AzureSasCredential(sasToken)
);

二、Azure Event Hubs的实现方式

使用EventHubSharedAccessSignatureBuilder类,逻辑与Service Bus完全一致,示例代码:

using Azure.Messaging.EventHubs;

var sasBuilder = new EventHubSharedAccessSignatureBuilder
{
    KeyName = "你的SAS密钥名称",
    SharedAccessKey = "你的SAS密钥值",
    Endpoint = new Uri("sb://你的Event Hubs命名空间.servicebus.windows.net/"),
    EntityPath = "目标Event Hub名称",
    ExpiresOn = DateTimeOffset.UtcNow.AddHours(1)
};

string sasToken = sasBuilder.BuildSignature();

远程客户端使用令牌创建Event Hubs客户端:

var eventHubClient = new EventHubClient(
    "sb://你的Event Hubs命名空间.servicebus.windows.net/目标Event Hub名称",
    new AzureSasCredential(sasToken)
);

这两个Builder类是官方针对新SDK设计的替代方案,支持生成针对全局命名空间或特定实体的SAS令牌,权限范围、有效期等控制逻辑与旧版TokenProvider完全对齐,满足远程服务的授权需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:05:18