如何使用Identity Server 4实施双因素身份验证?令牌结束点返回带有用户名和密码/客户端凭据的令牌。 我们可以自定义这些终点吗?
根据样本的两种方法都不允许自定义终点:
> var tokenClient = new TokenClient(disco.TokenEndpoint, "ro.client", "secret");
> var tokenResponse = await tokenClient.RequestResourceOwnerPasswordAsync("brockallen@gmail.com",
> "Pass123$", "api1");
是否可以使用asp.net身份或EF Core实现实现双因素身份验证?
答案 0 :(得分:0)
这根本不是问题。当用户重定向到Identity Server进行登录时,如果启用了2FA,则在Identity Server返回响应之前,他/她将必须输入验证者的代码。我创建了一个存储库和blog post series来详细解释相关概念。在IdentityServer的AccountController中,您必须检查2FA是否已启用,并要求用户通过提供验证码来继续操作,然后返回响应。
var signInResult = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, true,
lockoutOnFailure: false);
if (signInResult.RequiresTwoFactor)
{
result.Status = Status.Success;
result.Message = "Enter the code generated by your authenticator app";
result.Data = new {requires2FA = true};
return result;
}
您还需要一个TwoFactorAuthenticationController,它支持所有2FA任务(启用/禁用2FA,使用身份验证器代码/恢复令牌登录,重置身份验证器等) < / p>