c# - 将 TOTP Microsoft 身份验证器用于 ASP.NET MVC

标签 c# asp.net-mvc authentication two-factor-authentication

我们已经有一个使用 Active Directory 的单一身份验证过程用于我们自制的网站(简单的登录名和密码)。我们的 AD 也在 Azure 上(一切都是同步的)。

现在我们想要使用这个进行 2 因素身份验证:(Microsoft Authenticator) https://www.microsoft.com/en-us/account/authenticator

我一直在寻找一个例子,但我找到的大部分教程都是关于 MVC 核心的; 我没有使用核心,只是常规的 MVC .Net Framework。此外,我发现使用 .Net 框架的唯一教程是针对 Google 身份验证器的,而不是 Microsoft 的。

预期的行为与我连接到 Office 365 时相同,首先我在网站上输入我的密码,然后我在手机上收到通知(例如),通过批准连接,我可以访问网络内容。

我仍在尝试弄清楚这是否被允许,Microsoft Authenticator 是否仅供 Microsoft 开发人员使用,或者我们可以随机开发人员使用此应用程序来满足我们的 2FA 需求吗?或者有没有办法触发 Office 365 身份验证窗口?

如果是,他们似乎并不急于分享 MVC .net Framework 的任何代码或教程。 (我还在寻找)

编辑评论:

Microsoft auth .Net Core 文档:

https://learn.microsoft.com/en-us/aspnet/core/security/authentication/mfa?view=aspnetcore-5.0

使用 .Net 框架文档的 Google 身份验证:

https://medium.com/@henryhdelgado/2fa-with-google-authenticator-in-asp-mvc-4788c79c47

编辑/解决方案:

如果有人懒得阅读答案的评论,这就是我真正要找的东西:https://learn.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-asp-webapp

最佳答案

简而言之:您无需执行任何操作(前提是您的应用程序使用 OIDC 对用户进行身份验证,如果您使用 Azure Active Directory,它将执行此操作或带有您的应用程序的 Office 365)。只需拨动您组织的 O365 或 AAD 设置中的开关即可要求 TOTP/2FA。

但是,如果您的应用程序实际上是针对本地 AD 进行身份验证(无论是通过浏览器外壳使用 Kerberos,还是使用“表单例份验证”)并且您无法让您的 Web 应用程序针对 AAD/O365 进行身份验证(not on-prem AD)并且您没有 AD Federation 工作,那么您将陷入痛苦的世界,因为让本地 2FA 工作是一项艰巨的任务,需要您做同样多的工作系统管理员就像你一样(然后你的问题会因为“太宽泛”而被关闭,抱歉!)


可以使用任何 OIDC 客户端库对 AAD/O365 进行身份验证,尽管 Microsoft 确实在 NuGet 上提供了一个专门构建的库,除了 .NET Core 之外,它还可以在 .NET Framework 应用程序中使用:https://www.nuget.org/packages/Microsoft.Identity.Client/ (以前是 https://www.nuget.org/packages/Microsoft.IdentityModel.Clients.ActiveDirectory/)


顺便说一句,“Azure Active Directory”(AAD) 用词不当,因为它与本地 Active Directory 关系不大。也就是说,如果您在企业内使用 Office 365,那么您将已经启动并运行 AAD - 请注意,它仍然与 Active Directory 完全无关(就技术而言)。

将 AAD/O365 用于 SSO 基本上意味着使用 OIDC(而本地 AD 是 Kerberos,而不是 OIDC)——因此任何 OIDC 库都可以与 AAD/O365 一起使用。 TOTP/2FA 部分完全由 AAD/O365 处理,因此您实际上不需要在自己的应用程序中执行任何操作来处理 TOTP/2FA。

关于c# - 将 TOTP Microsoft 身份验证器用于 ASP.NET MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66123661/

相关文章:

c# - 将 XML 数据导入组合框

MySQL 与 asp.net MVC

iphone - Facebook SDK 2.0 的 Facebook OAuth 登录问题

php - 身份验证/登录中的凭据错误 - Symfony2

ruby-on-rails - 在 View 中访问数据库对象(和其他重要数据)

c# - 表单认证

c# - 用数组名称包装序列化数组元素

c# - asp.net MVC 创建我自己的路由

c# - 在XAML中创建 "Dictionary<string, Dictionary<string, string>>"

asp.net-mvc - 在 Visual Studio 2013 中使用 AngularJS Material 设计