【问题标题】:AuthenticationMethod claim missing after two-factor authentication双重身份验证后缺少 AuthenticationMethod 声明
【发布时间】:2018-03-27 16:58:31
【问题描述】:

我将 IdentityServer4 与 AspNetCore 2 Identity 一起使用,并使用身份验证器应用程序设置了具有双因素身份验证的用户。身份验证一切正常,我可以看到一个值为 pwdamr 声明,但是我也希望(或希望)看到另一个 amr 声明值 mfa 表示用户使用双因素机制登录。

我创建了自己的 SignInManager 并提供了对 SignInAsync 的覆盖,我可以看到主体没有任何 amr 声明,所以我认为现有的 amr 声明是由 cookie/身份验证中间件(或者可能是 IS4?)添加的。

一些问题:

  1. 在使用 mfa 工作流时,我应该如何获取值为“mfa”的 amr 声明?
  2. AspNetCore Identity 是否应该负责设置 amr 和 idp 声明,而不是依赖底层中间件?
  3. 最后,当 aspnet Identity 未提供 amr 声明时,实际上是哪个中间件设置了 amr 声明?

【问题讨论】:

    标签: asp.net-identity identityserver4


    【解决方案1】:
    1. 在使用 mfa 工作流时,我应该如何获取值为“mfa”的 amr 声明?

    您需要在用户登录时添加用户声明,我还期望他们提供一种方式来判断任何用户是否使用 MFA 登录。

    https://github.com/aspnet/AspNetCore/pull/10636/files/20e985764097b60ebfae48bdb9f4005558b73e29#diff-9a3a4da09ce42b77457c5f3f23ced7fa

    .NET Core 3.0 预览版最近包含了一种查找相同内容的方法。

       List<Claim> claims = new List<Claim>
        {
            new Claim("amr", "mfa"),
        };
    
        identityResult = await _userManager.AddClaimsAsync(user, claims);
    

    您可能可以在登录时添加此代码,然后在注销时清除此声明,但解决此问题会有很多问题,除非他们提供一些方法。

    【讨论】:

      猜你喜欢
      • 2017-09-09
      • 2019-01-12
      • 2015-06-01
      • 2012-07-03
      • 2018-01-26
      • 1970-01-01
      • 2015-04-20
      • 2021-06-27
      • 2014-01-05
      相关资源
      最近更新 更多