Asp.Net WebApi身份基本身份验证和2FA

时间:2019-10-01 14:18:19

标签: asp.net asp.net-web-api asp.net-identity basic-authentication identity

我有一个具有基本身份验证(基于aps.net身份)的asp.net webapi(网络框架)项目,该项目通过使用过滤器来完成,如此处所述:https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/authentication-filters,因此对api方法的可访问性是由IdentityBasicAuthentication和Author过滤器控制。

我想实现两要素认证。

这就是我要做的事情

  1. 如果用户名/密码对,则前端在标头中发送“基本身份验证” 是正确的,用户启用了2fa,然后我发回质询: “ 2fa-token”(包括临时2fa-token),否则只需将其发回 响应,没有挑战,只要200。
  2. 在内部,我向用户短信/电子邮件发送验证码。
  3. 如果前端收到“ 2fa-token”挑战,则用户会看到带有代码输入的弹出窗口。
  4. 前端应 执行像TwoFactorCodeCheck(string 2faCode,string 2faToken UserCredentials uc)
  5. 如果一切正确,我会发回2fa 永久令牌,可以存储在Cookie中,并将用于 每个随之而来的webapi请求。否则我会发回挑战 “ WWW-Authenticate”,用户将需要完成该过程 再次。
  6. 添加可以从中读取永久2fa令牌的过滤器 标头并验证用户身份以执行webapi方法。如果要求 使用2f永久令牌完成,但是它已经比我过期了 再次发送“ WWW-Authenticate”和401。

听起来不错吗?

存储和管理正在发送到用户的短信/电子邮件的代码的最佳方法是什么。也许令牌应该包含到期信息或/和其他一些元数据,而无需存储任何内容。

此外,我是否需要对标识特定浏览器/用户会话的信息进行某种方式的操作,以便不能从其他计算机/浏览器使用相同的令牌。

由于某些原因,我找不到人们将普通的基本auth + 2fa混合使用的示例。

谢谢。

0 个答案:

没有答案