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

使用az login或MSAL登录Azure时如何强制触发MFA?

强制在az login或MSAL登录时触发MFA的方法

一、使用az login强制触发MFA

通过命令行参数强制清除缓存会话、触发完整登录流程,确保MFA验证被触发:

  • 基础命令(指定租户+强制重新登录):
    az login --tenant <你的租户ID/域名> --prompt=login
    
  • 若存在旧登录缓存,添加--force-refresh彻底清除缓存,保证从头触发MFA:
    az login --force-refresh --prompt=login --scope https://management.azure.com/.default
    

--prompt=login会跳过本地缓存的会话,强制用户重新输入凭据并完成MFA;--scope指定需要访问的Azure资源范围,确保令牌符合后续OBO流程的权限要求。

二、使用MSAL强制触发MFA

在MSAL的登录请求中,通过prompt参数强制重新登录,同时通过claims参数明确要求包含MFA认证声明,确保令牌能通过后续条件访问策略验证:

Python示例

from msal import PublicClientApplication

# 初始化客户端
app = PublicClientApplication(
    client_id="你的客户端ID",
    authority="https://login.microsoftonline.com/你的租户ID"
)

# 触发带MFA的交互式登录
result = app.acquire_token_interactive(
    scopes=["https://management.azure.com/.default"],
    prompt="login",  # 强制跳过缓存,重新登录
    claims={"access_token": {"amr": ["mfa"]}}  # 要求令牌包含MFA认证声明
)

.NET示例

using Microsoft.Identity.Client;

var pca = PublicClientApplicationBuilder
    .Create("你的客户端ID")
    .WithAuthority("https://login.microsoftonline.com/你的租户ID")
    .Build();

// 触发交互式登录并强制MFA
var result = await pca.AcquireTokenInteractive(new[] {"https://management.azure.com/.default"})
    .WithPrompt(Prompt.ForceLogin)  // 强制重新登录
    .WithClaims("{\"access_token\": {\"amr\": [\"mfa\"]}}")  // 指定需要MFA声明
    .ExecuteAsync();

关键逻辑说明

通过prompt=login(或Prompt.ForceLogin)跳过本地缓存的会话,强制用户完成完整的身份验证流程;claims参数明确告知Entra ID,只有包含MFA认证(amr声明为mfa)的令牌才会被接受,这样就能主动触发MFA,避免后续OBO流程中因令牌未通过MFA验证而被条件访问策略拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:29:57