如何使用 Identity Server 4 实现两因素身份验证?令牌端点返回一个带有用户名和密码/客户端凭据的令牌。我们可以自定义这些端点吗?
根据示例的两种方法都不允许自定义端点:
> var tokenClient = new TokenClient(disco.TokenEndpoint, "ro.client", "secret");
> var tokenResponse = await tokenClient.RequestResourceOwnerPasswordAsync("brockallen@gmail.com",
> "Pass123$", "api1");
Run Code Online (Sandbox Code Playgroud)
是否可以使用 asp.net 身份或 EF Core 实现来实现 2 因素身份验证?
小智 6
这根本不应该是问题。当用户被重定向到身份服务器进行登录时,如果启用了 2FA,那么他/她必须在身份服务器返回响应之前输入身份验证器的代码。我创建了一个存储库和博客文章系列 ,详细解释了相关概念。在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;
}
Run Code Online (Sandbox Code Playgroud)
您还需要一个支持所有 2FA 任务的TwoFactorAuthenticationController (启用/禁用 2FA、使用验证码/恢复令牌登录、重置验证器等...)
| 归档时间: |
|
| 查看次数: |
8937 次 |
| 最近记录: |