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

Posted

技术标签:

【中文标题】Angular 和 Asp.Net Core - 启用 2 因素身份验证【英文标题】:Angular & Asp.Net Core - Enable 2 Factor Authentication 【发布时间】:2019-12-10 06:53:09 【问题描述】:

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

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

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

【问题讨论】:

您找到解决方案了吗?如果可以,请分享您的解决方案 不幸的是还没有,因为我们找不到最佳实践,我们决定推迟这个问题@Nerdroid 【参考方案1】:

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

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

【讨论】:

嗨@Pinpoint,非常感谢您抽出时间回答我。我仍然不明白如何使用 angular spa 应用程序来做到这一点。是否可以仅使用 OpenIdDict 在 SPA 中完成?

以上是关于Angular 和 Asp.Net Core - 启用 2 因素身份验证的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net Core、Angular2 和基于令牌的身份验证

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

将 ASP.NET Boilerplate Core 和 Angular 部署到 Microsoft Azure

使用 MSAL 保护 ASP.Net Core Web API 和 Angular App

更改 Angular 和 ASP.NET Core 项目中的默认身份路由

ASP.NET Core 3.1 和 Angular:将 api 调用重定向到登录页面