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

获取Microsoft Graph令牌时触发MsalUiRequiredException错误求助

问题描述

使用用户名密码方式获取Microsoft Graph令牌时触发多重身份验证要求,报错如下:

错误详情

Microsoft.Identity.Client.MsalUiRequiredException: 'AADSTS50076: 由于管理员进行了配置更改,或者您已迁移到新位置,您必须使用多重身份验证才能访问'00000003-0000-0000-c000-000000000000'。Trace ID: 43e876a2-7f8d-4631-9b4d-8c8c875c8900 Correlation ID: ab584317-4e37-41ce-96c1-8610f6bd5293 Timestamp: 2024-05-08 09:40:05Z'

涉事代码片段

try
{
result = await app.AcquireTokenByUsernamePassword(
scopes: scopes,
username: this._loginId,
password: this._loginPassword
).ExecuteAsync();
}

需求说明

通过用户名+密码方式获取令牌,用于调用Microsoft Graph API(baseUri为https://graph.microsoft.com/beta)


解决方案

AADSTS50076错误的核心原因是:目标Azure AD租户或应用已启用多重身份验证(MFA),而你使用的AcquireTokenByUsernamePassword属于ROPC授权流,该流不支持MFA验证,因此触发拦截。

针对你的需求,提供两种可行方案:

  1. 切换至支持MFA的授权流

    • 授权码流:适合有交互界面的应用,引导用户通过浏览器完成登录(包含MFA步骤),获取授权码后兑换令牌。
    • 设备码流:适合无界面后台应用,用户可在其他设备上打开指定URL输入验证码完成MFA验证,应用后台自动获取令牌。
  2. 临时豁免MFA(仅限测试场景)

    • 联系Azure AD管理员,将该账号加入MFA豁免列表,或调整对应应用的条件访问策略,允许该账号通过ROPC流访问Microsoft Graph。此方式存在安全隐患,严禁在生产环境使用。

推荐代码示例

授权码流(简化版)

var result = await app.AcquireTokenInteractive(scopes)
    .WithRedirectUri("https://localhost:你的端口号")
    .ExecuteAsync();

设备码流

var result = await app.AcquireTokenWithDeviceCode(scopes, deviceCodeResult =>
{
    Console.WriteLine(deviceCodeResult.Message);
    return Task.FromResult(0);
}).ExecuteAsync();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:33:18