首页 > 解决方案 > Angular 和 Asp.Net Core - 启用 2 因素身份验证

问题描述

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

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

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

标签: asp.netangularoauth-2.0two-factor-authenticationopeniddict

解决方案


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

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


推荐阅读