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

如何在ASP.NET Core 6中为特定操作触发即时MFA验证?

为ASP.NET Core 6敏感操作触发额外Azure AD MFA验证

你可以通过代码触发额外的MFA验证,同时结合少量Azure AD配置实现精准控制,无需完全依赖企业应用的全局配置。以下是具体方案:

核心逻辑

先检查当前用户会话是否已完成MFA验证,若未完成则触发Azure AD的强制MFA重新认证,验证通过后再执行敏感操作。用户完成MFA后,Azure AD会在ID令牌中携带amr(Authentication Method Reference)声明,值为mfa,我们可以通过这个Claim判断验证状态。

完整代码实现

敏感操作的Action代码

using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;

public IActionResult OnGet()
{
    if (User.Identity is not { IsAuthenticated: true })
        return Forbid();

    // 检查当前会话是否已通过MFA验证
    var hasMfaValidation = User.Claims.Any(c => c.Type == "amr" && c.Value == "mfa");
    if (!hasMfaValidation)
    {
        // 配置重新认证参数:强制要求MFA,验证完成后返回当前操作
        var authProperties = new AuthenticationProperties
        {
            RedirectUri = Url.Action(nameof(OnGet)),
            Items =
            {
                { "acr_values", "amr:mfa" }
            }
        };
        return Challenge(authProperties, OpenIdConnectDefaults.AuthenticationScheme);
    }

    // 执行密码重置等敏感操作
    User.ChangePassword();
    return RedirectToAction(nameof(Profile));
}

调整认证服务配置(Program.cs)

确保Azure AD能接收我们传递的强制MFA参数:

builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"), options =>
    {
        options.Events = new OpenIdConnectEvents
        {
            OnRedirectToIdentityProvider = context =>
            {
                // 将强制MFA的参数传递给Azure AD
                if (context.Properties.Items.TryGetValue("acr_values", out var acrValues))
                {
                    context.ProtocolMessage.AcrValues = acrValues;
                }
                return Task.CompletedTask;
            }
        };
    });

配套Azure AD配置

  1. 在Azure AD应用注册的令牌配置中,确保添加了amr声明(默认通常已包含,若缺失可手动添加)。
  2. 若需要全局兜底规则,可在Azure AD条件访问策略中针对该应用设置MFA,但代码触发的方式更灵活,仅对指定敏感操作生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:45:54