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

using TOTP Microsoft authenticator for ASP.NET MVC

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

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

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

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

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

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

编辑评论:

Microsoft auth .Net Core 文档:

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

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

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

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

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


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


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

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