.net Net核心中的双因素身份验证-如何验证令牌
我正在为SPA客户端在.NETCore3.1中实现双因素身份验证。我已经设置了Jwt身份验证,所以应该在成功的2fa验证后发布承载令牌。我不确定密码身份验证是否适合2fa。如果密码有效且未启用2fa,则.Net Core API可以简单地返回JWT承载令牌,如果启用2fa,我的想法是(我没有使用标识,因此UserManager类不是选项):.net Net核心中的双因素身份验证-如何验证令牌,.net,oauth-2.0,jwt,.net-core-3.1,two-factor-authentication,.net,Oauth 2.0,Jwt,.net Core 3.1,Two Factor Authentication,我正在为SPA客户端在.NETCore3.1中实现双因素身份验证。我已经设置了Jwt身份验证,所以应该在成功的2fa验证后发布承载令牌。我不确定密码身份验证是否适合2fa。如果密码有效且未启用2fa,则.Net Core API可以简单地返回JWT承载令牌,如果启用2fa,我的想法是(我没有使用标识,因此UserManager类不是选项): 密码验证成功后,返回过期的JWT令牌(临时令牌) 用户被重新路由到2FA屏幕,输入2FA代码,然后与临时令牌一起提交给API 在服务器中,使用JwtSecu
步骤1对我来说似乎有点冒险,因为临时令牌没有过期时间-如果攻击者有权访问该令牌,那么他可以强制系统,因为2FA代码只有6位。另一方面,发行寿命较短(比如2分钟)的令牌似乎也有风险,因为该令牌现在可以在其他端点中实际使用。对于2FA流,一般的指导原则是什么?我想到了创建一个一次性使用令牌,它的使用寿命很短。一次性令牌使用用户的哈希密码和上次登录日期作为签名密钥。这使得它成为一次性的,就像用户在上次登录日期更改时一样。我的另一个想法是,为了2FA代码的唯一目的,有一个单独的令牌颁发者,具有不同的签名密钥。这一次,我可以发布一个生命周期更短的令牌,但仍然不能在其他端点上使用。这似乎是个好主意,但仍在寻找其他选择。