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

.NET Framework 4.7.2 Web Jobs能否使用托管标识认证?

.NET Framework 4.7.2 Web Jobs SDK 2.0 实现Azure Service Bus托管标识认证方案

不需要提前迁移到.NET Core,.NET Framework 4.7.2 + Web Jobs SDK 2.0完全可以通过自定义配置实现托管标识认证Azure Service Bus,下面是具体实现步骤和注意事项:

一、必要的NuGet包安装

安装以下兼容.NET Framework 4.7.2的包版本(可根据实际情况选择最新兼容版):

Install-Package Microsoft.Azure.WebJobs.ServiceBus -Version 2.3.0
Install-Package Microsoft.Azure.ServiceBus -Version 5.2.0
Install-Package Azure.Identity -Version 1.10.4

二、自定义托管标识认证配置

Web Jobs SDK 2.0默认依赖连接字符串认证,我们需要替换为托管标识的TokenProvider实现身份验证,具体代码如下:

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.ServiceBus;
using Microsoft.Azure.ServiceBus;
using Microsoft.Azure.ServiceBus.Primitives;

var config = new JobHostingConfiguration();

// 替换为你的托管标识ClientId和Service Bus命名空间地址
var managedIdentityClientId = "your-managed-identity-client-id";
var serviceBusEndpoint = "sb://your-servicebus-namespace.servicebus.windows.net/";

// 创建托管标识TokenProvider
var tokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(managedIdentityClientId);

// 配置NamespaceManager和MessagingFactory使用托管标识TokenProvider
var namespaceManager = NamespaceManager.CreateFromConnectionString(serviceBusEndpoint);
namespaceManager.Settings.TokenProvider = tokenProvider;

var messagingFactory = MessagingFactory.CreateFromConnectionString(serviceBusEndpoint);
messagingFactory.Settings.TokenProvider = tokenProvider;

// 将自定义配置注入Web Jobs的ServiceBus组件
config.UseServiceBus(new ServiceBusConfiguration
{
    NamespaceManager = namespaceManager,
    MessagingFactory = messagingFactory
});

// 启动JobHost
var host = new JobHost(config);
host.RunAndBlock();

三、关键注意事项

  • 权限配置:确保托管标识已被授予Azure Service Bus的对应权限(如Azure Service Bus Data Sender、Azure Service Bus Data Receiver等,根据Web Job的业务操作选择)
  • 环境适配:在Azure环境(App Service、VM等)运行时,需确保资源已正确关联托管标识;本地调试可通过Azure CLI、Visual Studio登录账户等方式,让TokenProvider自动获取本地身份凭证完成认证
  • 版本兼容:避免使用过于老旧的NuGet包,部分早期版本的Microsoft.Azure.ServiceBus可能不支持托管标识TokenProvider

四、长期规划建议

虽然上述方案可以满足当前需求,但从长期维护和功能支持角度,迁移到.NET Core/.NET 6+的Web Jobs SDK 3.x会更优:

  • SDK 3.x内置对托管标识的原生支持,代码更简洁(类似你已实现的.NET Core版本)
  • 后续Azure服务的新特性会优先支持.NET Core/.NET 5+平台
  • 获得更完善的官方维护和更新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:45:53