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

关于microsoft.bot.Connector NuGet包MSAL迁移的最新版本及代码示例问询

Microsoft.Bot.Connector MSAL迁移相关问题解答

已完成MSAL迁移的最新版本

Microsoft.Bot.Connector NuGet包在4.15.0版本及之后完成了从ADAL到MSAL的迁移,彻底移除了对ActiveDirectory相关依赖库的引用。截至2024年,该包的最新稳定版本为4.22.1,可直接通过NuGet包管理器安装使用。

MSAL升级示例代码

以下是基于最新版本,使用MSAL(Microsoft.Identity.Client)完成认证并调用Bot Connector API的实现示例:

1. 安装必要NuGet包

先通过包管理器控制台安装依赖:

Install-Package Microsoft.Bot.Connector -Version 4.22.1
Install-Package Microsoft.Identity.Client -Version 4.56.0

2. 核心代码实现

using Microsoft.Bot.Connector;
using Microsoft.Identity.Client;
using System.Net.Http;
using System.Threading.Tasks;

public class BotConnectorMsalAuth
{
    // 替换为你的实际配置参数
    private const string TenantId = "你的Azure AD租户ID";
    private const string ClientId = "你的应用注册客户端ID";
    private const string ClientSecret = "你的应用注册客户端密钥";
    private const string BotConnectorScope = "https://api.botframework.com/.default";
    private const string BotServiceBaseUrl = "你的Bot服务URL";

    public async Task SendAuthenticatedMessage()
    {
        // 初始化MSAL机密客户端
        var msalClient = ConfidentialClientApplicationBuilder
            .Create(ClientId)
            .WithClientSecret(ClientSecret)
            .WithAuthority($"https://login.microsoftonline.com/{TenantId}")
            .Build();

        // 获取Bot Connector API的访问令牌
        var authResult = await msalClient.AcquireTokenForClient(new[] { BotConnectorScope })
            .ExecuteAsync();

        // 配置Bot Connector客户端并注入令牌
        var connectorClient = new ConnectorClient(new Uri(BotServiceBaseUrl));
        connectorClient.Credentials = new MsalTokenCredential(authResult.AccessToken);

        // 构造并发送测试消息
        var messageActivity = new Activity
        {
            Type = ActivityTypes.Message,
            Recipient = new ChannelAccount { Id = "目标用户ID" },
            From = new ChannelAccount { Id = "你的Bot ID" },
            Text = "通过MSAL认证发送的测试消息"
        };

        await connectorClient.Conversations.SendToConversationAsync(messageActivity);
    }
}

// 自定义令牌凭据类,用于将MSAL令牌注入请求头
public class MsalTokenCredential : ServiceClientCredentials
{
    private readonly string _accessToken;

    public MsalTokenCredential(string accessToken)
    {
        _accessToken = accessToken;
    }

    public override Task ProcessHttpRequestAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
    {
        request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", _accessToken);
        return base.ProcessHttpRequestAsync(request, cancellationToken);
    }
}

代码说明

  • 需将示例中的配置参数替换为你的Azure AD租户、应用注册及Bot服务的实际信息。
  • 使用MSAL的ConfidentialClientApplication实现客户端模式的令牌获取,适配Bot Connector API的权限要求。
  • 自定义MsalTokenCredential类负责将令牌注入到API请求的Authorization头中,完成认证流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:10:20