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

如何在Microsoft OAuth2 v2.0授权端点强制启用MFA认证

问题根因

Azure AD OAuth2 v2.0 端点已废弃原v1版本支持的amr_values请求参数,因此传入该参数会直接返回AADSTS901002错误。而你调用合作伙伴中心API返回500错误的原因是,新版合作伙伴中心API仅兼容v2.0端点签发的令牌,v1端点的令牌格式、声明结构不符合接口要求。

解决方案

v2.0端点下强制触发MFA有两种可行方案:

方案1:在授权请求中添加claims参数

该方案是标准OIDC协议实现方式,无需改动Azure后台配置,直接调整授权请求即可:

  1. 构造要求强制返回MFA声明的JSON结构:
{
  "id_token": {
    "amr": {
      "essential": true,
      "values": ["mfa"]
    }
  },
  "access_token": {
    "amr": {
      "essential": true,
      "values": ["mfa"]
    }
  }
}
  1. 将上述JSON做URL编码后,作为claims参数的值附加到v2.0授权URL末尾即可,示例请求格式如下:
    https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/authorize?client_id={应用客户端ID}&response_type=code&redirect_uri={你的回调地址}&scope={请求的权限范围}&claims={URL编码后的JSON字符串}

方案2:配置条件访问策略

如果该应用所有用户都需要强制MFA,可以直接在Azure门户配置条件访问策略,不需要修改请求参数:

  • 进入对应应用的注册页面,在安全配置中关联强制MFA的条件访问策略,覆盖所有访问该应用的用户,Azure AD会自动在用户登录时触发MFA校验。
注意事项
  • 构造claims参数时必须完成URL编码,否则会出现参数解析错误
  • 测试时建议先清空浏览器微软登录会话,避免已有登录状态的MFA缓存影响测试结果
  • 如果使用条件访问方案,需要确保对应租户已开启条件访问功能,且目标用户在策略的覆盖范围内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:00:00