使用身份服务器4的双因素身份验证

时间:2017-04-10 17:59:36

标签: identityserver4

如何使用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实现实现双因素身份验证?

1 个答案:

答案 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>