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

启用Security Defaults无交互获取令牌报AADSTS50076解决方案

问题根因

返回AADSTS50076错误的核心原因是Azure AD安全默认值(Security Defaults)的强制策略:安全默认值开启时,会全局拦截所有不支持MFA挑战的旧式身份认证流,你当前使用的grant_type=password即ROPC(资源所有者密码凭据)流就在拦截范围内。
ROPC流本身不支持MFA交互流程,因此即便你单独给用户关闭了MFA配置,只要安全默认值处于开启状态,所有ROPC请求都会被强制触发MFA校验,最终返回该错误。另外你当前请求里的response_type: "code"是授权码流的参数,在ROPC流中属于冗余参数,不会触发本次报错但没有实际作用。

保持安全默认值开启的无交互令牌获取方案

安全默认值不会拦截服务主体类认证流,也不会拦截已完成MFA认证后的后续令牌兑换请求,你可以根据业务场景选择以下任意一种方案,全程不需要持续的用户交互:

  • 方案1:客户端凭据流(适用于无用户上下文的后台服务场景,实现最简单)
    如果你的业务不需要绑定特定用户身份调用Graph API,直接使用客户端凭据流即可,该流基于应用服务主体身份认证,完全不涉及用户账号,不会触发MFA校验。
    请求格式如下:
    POST https://login.microsoftonline.com/<AD-Tenant-Id>/oauth2/v2.0/token
    Content-Type: application/x-www-form-urlencoded
    
    client_id=<application ID>
    &client_secret=<secret string>
    &scope=https://graph.microsoft.com/.default
    &grant_type=client_credentials
    
    调用前需要提前在Azure AD应用注册页面,给当前应用添加所需的Graph API应用权限,并完成管理员同意配置。
  • 方案2:设备代码流+持久化刷新令牌(适用于需要用户上下文的场景)
    如果你必须使用用户身份调用Graph API,可以先通过设备代码流完成首次认证:首次认证时需要用户在浏览器中完成一次MFA校验,校验通过后你可以将返回的刷新令牌加密存储在本地。后续调用时直接使用刷新令牌兑换新的访问令牌和刷新令牌即可,全程无用户交互,安全默认值不会拦截刷新令牌的兑换请求。只要你在刷新令牌过期前定期续期,就可以长期保持无交互调用状态。
  • 方案3:集成Windows认证/客户端证书认证流(适用于域加入合规设备场景)
    如果你的代码运行在已加入Azure AD、且通过组织合规策略检查的设备上,可以直接使用集成Windows认证流或者客户端证书认证流,这两种流在安全默认值开启状态下不会被要求额外MFA校验,可以直接无交互获取对应用户上下文的访问令牌。
注意事项

不存在单独放开ROPC流使用权限的配置项:安全默认值对ROPC流的拦截是全局策略级别的,没有针对单个应用、单个用户的白名单配置,只要保持安全默认值开启,ROPC流就无法正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 09:57:31