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

如何使用MSAL通过服务账号静默获取访问令牌?(替代ADAL)

用MSAL实现服务账号静默获取令牌(替代ADAL)

以下是对应你提供的ADAL代码的MSAL实现,可实现无提示、无重定向的令牌获取:

首先需要安装MSAL的NuGet包:Microsoft.Identity.Client

示例代码

using Microsoft.Identity.Client;

var clientId = "";
var tenantId = ""; // 可填写租户域名或租户ID
var userName = "";
var password = "";
var targetResource = "https://management.core.windows.net/";

// 构建公共客户端应用实例
var publicClientApp = PublicClientApplicationBuilder
    .Create(clientId)
    .WithTenantId(tenantId)
    .Build();

// 通过用户名密码流静默获取令牌
var authResult = await publicClientApp.AcquireTokenByUsernamePassword(
    new[] { $"{targetResource}/.default" }, // MSAL中需按此格式指定作用域
    userName,
    password)
    .ExecuteAsync();

// 获取到的访问令牌:authResult.AccessToken

关键说明

  • MSAL中作用域需指定为{资源URL}/.default格式,对应ADAL中的资源参数
  • 建议使用租户ID而非域名,兼容性更强
  • 需确保Azure AD应用注册中已开启"允许公共客户端流"(在应用注册的「身份验证」页面配置)
  • 注意:用户名密码流(ROPC)存在密码泄露风险,生产环境中优先推荐使用客户端凭据流(Client Credentials Flow)实现服务间认证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:05:41