如果“RememberMachine”为 true,如何将 ASP.NET Core“amr”声明设置为“mfa”?

问题描述 投票:0回答:1

我正在为我的 ASP.NET Core (v7.x) MVC 应用程序启用多重身份验证。

在我选中“记住机器”复选框之前,它似乎工作正常。正如预期的那样,Identity 正在创建一个“Identity.TwoFactorRememberMe”cookie,并在完成 MFA 序列时将“amr”声明设置为“mfa”。如果我注销并重新登录,Identity 会正确跳过 MFA 序列,但“amr”声明将设置为“pwd”。因此,我无法使用“amr”声明强制执行任何“必须使用 MFA”授权要求。

这是设计使然吗?

我主要遵循模板代码,该代码是我从 Razor Pages 实现引入到使用 MVC 的实现中的。我验证了在 Razor Pages 中使用原始模板代码的应用程序中也出现了相同的“问题”。

我看到了添加新的自定义声明的建议,该声明可以识别用户是否正在使用“记住的”MFA 结果。在我看来,这违背了“amr”主张的内置机制。在覆盖 SignInManager 的各个部分之前,我想看看是否 (1) 其他人“注意到”或经历过同样的问题,以及 (2) 任何人都使用“amr”声明“修复”了该问题,而没有覆盖任何内容。

asp.net-mvc asp.net-core multi-factor-authentication
1个回答
0
投票

这是设计使然,

amr
=
mfa
声明旨在用于高安全性方法,例如管理视图或更改您自己帐户的安全设置(例如密码重置)。如果他们尝试使用 MFA 安全方法但没有
amr
=
mfa
,那么他们应该面临 MFA 挑战 - 请记住设备还不够。

如果您只想为使用“记住设备”绕过 MFA 或完成 MFA 检查的用户授权某些方法,则只需检查其帐户是否启用了 MFA。如果是 - 那么这意味着他们的身份验证已经足够好 - 我们不关心

amr
声明。

您可以通过选中

ApplicationUser.TwoFactorEnabled
UserManager.GetTwoFactorEnabledAsync
来做到这一点。您可以创建自定义属性或使用该检查注册授权策略,以便轻松重用。如果用户未启用两个因素,您也可以完全阻止用户登录。

© www.soinside.com 2019 - 2024. All rights reserved.