Angular & Asp.Net Core - 启用 2 因素身份验证

Tal*_*umy 5 asp.net oauth-2.0 two-factor-authentication openiddict angular

我有一个用 angular 7 编写的单页应用程序,它与我的 ASP.Net Core 2.2 Web API 服务器进行通信。登录时,用户使用“资源所有者密码凭据”授权将他的凭据发送到我的授权服务器(连接/令牌)。我正在尝试添加 2 因素身份验证 (SMS),但找不到任何描述如何执行此操作的示例。我发现的所有示例都是使用 MVC 编写的,使用 cookie 身份验证。

我在考虑这个流程,但我觉得应该有更好的方法

  1. 用户输入他的用户名和密码
  2. 如果用户启用了 2 个因素,我将向他发送带有代码的短信。此外,将向客户端发送有限的 access_token 和 id 令牌。此 access_token 仅在使用户能够发送 2 因素代码时有效。如果 id-token 有“两个因素”的声明:“on”,我会将用户重定向到 SMS 确认代码。
  3. 用户将发送带有代码的 post 请求。如果代码匹配,我将向客户端返回一个包含所有声明的新 access_token。

Kév*_*let 1

2FA 非常不适合资源所有者密码凭据授予(至少不是标准风格)。

像代码或隐式流这样的交互式流将允许以完全标准的方式使用 ASP.NET Core Identity 及其默认控制器/Razor 页面轻松实现。