(已编辑以符合答案作者的理解——新的、新鲜的、干净的问题发布在这里:Active Directory + Google Authenticator-Windows Server 中原生支持?)
迄今完成的研究
有一篇关于如何将 Google 身份验证器与 Active Directory 联合服务 (AD FS) 结合使用的 Technet 文章:https://blogs.technet.microsoft.com/cloudpfe/2014/10/26/using-time-based-one-time-passwords-for-multi-factor-authentication-in-ad-fs-3-0/
奇怪的是,它似乎是一个开发项目,需要一些代码和自己的 SQL DB。
我们这里不是专门讨论 AD FS。我们正在寻找内置于 AD 中的 2FA,优先支持 Google Authenticator RFC。
答案1
我们需要看看这里发生了什么。
AD FS 的意义在于SAML。它将连接到 Active Directory,将其用作 SAML 身份提供者。Google 已经有能力充当 SAML 服务提供商。将两者结合起来,这样 Google 就会信任您服务器的 SAML 令牌,并且您将通过 Active Directory 凭据登录 Google 帐户。1
另一方面,Google Authenticator 充当身份提供商的一个因素……通常用于 Google 自己的服务。现在您可能已经明白它与 AD FS 并不相配。将 AD FS 与 Google 结合使用时,您实际上不再使用 Google 的身份提供商,而当 AD FS 完成交接回 Google 时,身份方面已经完成。如果您做了任何事情,那就是将 Google 配置为要求 Authenticator 作为补充在 AD FS 或其他 SAML 身份提供商之上(但独立于 AD FS 或其他 SAML 身份提供商)进行身份确认。(注意:我认为 Google 不支持这一点,但他们应该支持)。
现在,这并不意味着你想做的事情是不可能的……只是它可能不是最合适的。虽然它主要用于 Active Directory,但 AD FS 也被设计为更通用的 SAML 服务;你可以将它连接到 Active Directory 以外的其他身份提供者,并且它支持许多不同的选项和扩展。其中之一是能够创建你自己的多因素身份验证提供程序。此外,Google Authenticator 支持TOTP 标准用于多因素身份验证。
将两者结合起来,应该可以(尽管这肯定不是一件容易的事)将 Google Authenticator 用作 AD FS 的 MuliFactor 提供程序。您链接到的文章是此类尝试的概念证明。但是,这不是 AD FS 开箱即用的功能;创建该插件取决于每个 Multi-Factor 服务。
也许 MS 可以为一些大型多因素提供商提供第一方支持(如果有这样的事情的话),但 Google Authenticator 还很新,而 AD FS 3.0 已经很旧,因此在发布时这样做是不可行的。此外,当 MS 无法影响其他提供商何时或推送哪些更新时,维护这些更新对 MS 来说将是一个挑战。
也许当 Windows Server 2016 发布时,更新的 AD FS 将使这变得更容易。他们似乎已经为更好的多因素支持做了一些工作但我没看到任何关于在盒子中包含竞争对手的身份验证器的说明。相反,他们似乎希望您设置 Azure 来执行此操作,并可能为他们自己的 Authenticator 竞争对手提供 iOS/Android/Windows 应用程序。
我最终希望看到 MS 实现的是通用的TOTP 提供商,我配置了一些内容来告诉它我正在与 Google Authenticator 对话,然后它完成其余的工作。也许有一天。也许一旦我们真正得到它,对系统进行更详细的观察,就会发现它就在那里。
1我要声明,我曾这样做过。请注意,当你跳转时,这些信息不适用于 imap或其他使用该帐户的应用。换句话说,你打破了巨大的Google 帐户的一部分。为了避免这种情况,您还需要安装和配置Google 的密码同步工具使用该工具,每次有人在 Active Directory 中更改密码时,您的域控制器都会将密码的哈希值发送给 Google,以用于其他身份验证。
此外,对于您的用户来说,这要么全有要么全无。您可以通过端点 IP 地址进行限制,但不能基于用户进行限制。因此,如果您有不知道任何 Active Directory 凭据的旧用户(例如:大学的校友用户),那么将他们全部转移过来可能是一个挑战。出于这个原因,我目前没有将 AD FS 与 Google 结合使用,尽管我仍然希望最终实现这一飞跃。我们现在已经实现了这一飞跃。
答案2
我认为您的问题做出了一个不合理的假设,即微软的工作是增加对特定供应商的 2FA/MFA 解决方案的支持。但是,由于供应商选择添加该支持,因此有很多 2FA/MFA 产品已经支持 Windows 和 AD。如果 Google 认为增加支持并不重要,那其实不是微软的错。与身份验证和授权相关的 API 有详尽的文档,并且可以免费使用。
您链接到的博客文章示例代码任何人都可以编写以添加RFC6238TOTP 支持他们自己的 AD FS 环境。它恰好与 Google Authenticator 配合使用只是身份验证器支持该 RFC 的副作用。我还要注意底部关于代码是“概念验证”、“没有适当的错误处理”和“未考虑安全性而创建”的一系列免责声明。
无论如何,不会。我不认为 Windows Server 2016 会明确支持 Google Authenticator。但我认为没有什么可以阻止 Google 在 Server 2016 或更早版本上添加支持。
答案3
答案:截至 2017 年 10 月:
使用双人启用 MFA 来将 LDAP 返回到 AD 的系统
我们已经研究或尝试了一切。
- Azure/Microsoft MFA(设置复杂且耗时,运行不稳定)
- RADIUS 服务器
虽然我们不喜欢 DUO 的运营成本,但对于最多 50 个用户来说,对于我们来说,设置和使用的简单性值得这个成本。
我们至今还在使用:
用于 VPN 访问的 Cisco ASA 设备
Sonicwall 远程访问设备用于 VPN 访问(该设备还通过 LDAP 访问 AD)
我们不知道还有什么其他方法可以在 2-4 小时内完成设置,并且 MFA 可以启用挂起 AD 的 LDAP 服务。
我们仍然相信 AD 本身应该支持 Google Authenticator 背后的 TOTP/HOTP RFC,并且对 MS 未能在 Windows Server 2016 中妥善解决此问题深感失望。
答案4
目前已经有免费的插件用于使用 ADFS 进行一次性密码验证。它与谷歌或微软身份验证器应用程序配合良好。有关更多信息,请参阅 www.securemfa.com。我在生产中使用它没有任何问题。