![用于 Web 身份验证的 Active Directory:扩展到 100 万个用户?](https://linux22.com/image/489379/%E7%94%A8%E4%BA%8E%20Web%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E7%9A%84%20Active%20Directory%EF%BC%9A%E6%89%A9%E5%B1%95%E5%88%B0%20100%20%E4%B8%87%E4%B8%AA%E7%94%A8%E6%88%B7%EF%BC%9F.png)
我对 Active Directory 作为网站的身份验证后端(规模约为 100 万用户)的效果感兴趣。您是否有在这种规模的 Web 环境中使用 AD 的经验?如果有,我们需要什么级别的硬件?
[更新] 关于登录频率:我同意这是一个关键因素,但我们还没有这方面的信息。假设一个常规的商业/银行网站设置:通过表单登录一次,在会话中携带您的身份(即,除登录页面外,其他页面上均不调用 AD 进行身份验证)。
除了身份验证所需的信息外,AD 不会存储大量用户信息。
您预计网站有多繁忙:假设为一个普通的商业/银行网站。没有关于此的更多信息。
此 AD 是否会被分区:可以,尽管我们更喜欢最简单的架构。
此 AD 还会提供其他服务吗: 不。
您的 OU 结构有多复杂
您是否会扩展架构: 将使用标准模式。OU 结构将相当简单。
你会对其进行多次搜索吗?:仅查找用户名/电子邮件以进行后续绑定。
您是否会存储大量针对用户对象的信息: 不
- 交易所是否会参与此广告: 不
答案1
你能吗?是的。你应该吗?不。
首先,扩展负载 - 平均每秒登录 1 次的 100 万用户与平均每秒登录 100-1000 次的 100 万用户有很大不同。
不过,这只是一些一般性的想法 - 虽然从技术上讲可以,但我不知道 Active Directory 是否是将 100 万用户全部存储在一个域中的理想工具。如果您将其用于 Web 应用程序并开始出现性能问题,则很难进行故障排除。就我个人而言,对于支持 100 万用户的东西,它确实需要更专注于该特定任务。
如果这是您需要达到的基准,并且您确实想要使用 AD,那么您可能需要让 Microsoft 参与进来,以确保您的架构绝对正确,并至少完成负载/性能测试。
当您只需要 Active Directory 用于身份验证数据库时,Active Directory 执行和引入的“其他事项”(层、复制、扩展、“生产”网络域中的帐户的安全问题)的数量在我看来并不适合用户数量和所需的相对简单性。太过分和复杂了。
答案2
通常,您应该为应用程序用户使用 AD - LDS (ADAM)。无需支付许可费,并且 LDS 中的用户不能用作服务器本身的安全凭证。这是件好事。如果您的用户目录受到威胁,那么您的操作目录仍然可以使用。
您应该使用 AD 来管理机器。确保没有本地帐户,使用组策略来限制安全设置。(我想大多数人都会惊讶于这有多严格。)
这些包括:
- 使用 IPSEC 确保 NTLM 始终使用额外的加密进行传输。
- 关闭缓存的凭据。
- 在 Kerberos 上强制使用更高强度的加密算法。
- 如果必须使用完整安装,请将使用 Applocker/软件限制策略在服务器上运行的应用程序列入白名单。尝试使用服务器核心。(至少尝试一下……这就是我要说的。)
事实是...如果这是一个新系统。LDS 将是放置用户的绝佳场所。它具有出色的密码策略、密码复杂性等等...您真的应该考虑使用 SAML 或 OpenID...如果您有联合用户和非联合用户,您仍然应该针对声明模型进行编码并抽象出身份验证提供程序特定的代码。
答案3
你能为此使用 AD。但我建议您使用 ADAM(或现在称为“AD LDS”)。它应该能为您提供 AD 的许多好处,即预先存在的技术知识和用于复制的 FRS 等内容。如果 AD 在这方面的好处在您的“优点”列表中排名较低,那么您真的应该考虑使用其他 LDAP 软件包,例如 Siteminder,尽管这需要整合更多技术才能构建可扩展的系统。
正如许多发帖者指出的那样,您需要关注的最大性能问题是并发登录请求。解决此问题的最简单方法是在 64 位硬件上构建 DC,并确保 DC 有足够的 RAM 来存储整个 .dit 文件。这将显著提高您的性能,因为它将在处理 LDAP 查询时完全消除分页。如果您的 .dit 文件小于 1.5GB,您可以使用 32 位硬件,但何必呢?
此外,如果您正在寻找某种类型的高可用性,请注意 AD 中的复制和站点感知并非真正旨在提供商业应用程序可能需要的级别。您需要了解定位 DC 的限制,并编写应用程序以使用 Windows API 正确处理脱机/不可用的 DC。我经常看到这个问题,应用程序开发人员只是将他们的 LDAP 身份验证包指向 fqdn.ad.domain,但该地址只是一个简单的循环,如果您将 DC 脱机,它将不会被更新。
答案4
此注释声称即使是老旧的 Windows Server 2000 也能在 500 万个对象目录中每秒执行 2,376 次基于 LDAP 的全树搜索。而且他们的测试硬件相当简单。
无论如何,我认为 AD 是可靠身份验证的最佳解决方案,因为它具有很强的可扩展性(您可以在需要的地方拥有尽可能多的域控制器),并且安全。它是为身份验证和帐户管理而设计的,现在其发展相当成熟。
我不太清楚许可问题,但我认为如果您仅使用 AD 进行身份验证,则无需为用户提供 CAL。但我认为您需要针对您的具体情况查询 MSFS。