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
相关产品推荐
相关产品推荐

