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

