我正在使用带有AspNetCore 2 Identity的IdentityServer4,并使用验证器应用程序为用户设置了双因素身份验证。身份验证一切正常,我可以看到值为pwd的amr声明,但我也希望(或希望)看到另一个值为
mfa,以指示用户使用双因素机制登录。
我创建了自己的SignInManager,并为SignInAsync提供了一个覆盖,我可以看到主体没有任何amr声明,所以我认为现有的amr声明是由cookie/身份验证中间件(或者IS4?)添加的。
一些问题:
- 在使用mfa工作流时,我应该如何获得值为"mfa"的amr索赔
- AspNetCore Identity是否应该负责设置amr和idp声明,而不是依赖底层中间件
- 最后,在aspnetIdentity没有提供amr声明的情况下,哪个中间件实际上在设置amr声明
- 在使用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);
您可能可以在登录时添加此代码,然后在注销时清除此声明,但解决此问题会有很多问题,除非他们提供一些方法。