在双因素身份验证后,AuthenticationMethod声明丢失

时间:2017-10-16 08:16:08

标签: asp.net-identity identityserver4

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

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

有些问题:

  1. 我应该怎样做才能获得价值为" mfa"什么时候使用mfa工作流程?
  2. AspNetCore Identity是否应该负责设置amr和idp声明而不是依赖于底层中间件?
  3. 最后,当aspnet Identity没有提供amr声明时,哪个中间件实际设置了?#/ li>

1 个答案:

答案 0 :(得分:0)

  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);

您可能可以在登录时添加此代码,然后在注销时清除此声明,但是除非有其他方法,否则解决此问题将有很多问题。