我对 Active Directory 作为网站的身份验证后端的表现很感兴趣,可扩展到约 100 万用户。您是否有在这种规模的 Web 环境中使用 AD 的经验,如果有,我们需要什么级别的硬件?
[更新] 关于登录频率:我同意这是一个关键因素,但我们还没有这些信息。假设一个常规的商业/银行站点设置:通过表单登录一次,在会话中携带您的身份(即,在登录页面以外的页面上没有对 AD 的身份验证调用)。
AD 不会存储超出身份验证所需的大量用户信息。
您期望该网站有多忙:假设是一个正常的商业/银行网站。没有这方面的进一步信息。
此 AD 是否会被分区:可以,尽管首选最简单的架构。
该广告是否会提供其他服务:否。
您的 OU 结构将有多复杂
您是否会扩展架构: 将使用标准架构。OU 结构将相当简单。
您是否会对其执行许多搜索:仅查找用户名/电子邮件以进行后续绑定。
您是否会针对用户对象存储大量信息:否
- 本广告是否会涉及交易所:否
您可以...吗?是的。你应该?不。
首先,扩展负载 - 平均每秒 1 次登录的 1M 用户与平均每秒 100-1000 次登录的 1M 用户有很大不同。
不过,这只是一些一般性的想法 - 虽然从技术上讲它可以,但我不知道 Active Directory 是否是在一个域中存储 100 万用户的理想工具。如果您将它用于您的 Web 应用程序并开始遇到性能问题,那么排除故障将非常困难。就个人而言,对于支持 100 万用户的东西,它确实需要更专注于该特定任务。
如果这是您需要达到的基准并且您真的想使用 AD,您可能需要让 Microsoft 参与以确保您的架构绝对正确并至少进行负载/性能测试。
当您只需要身份验证数据库时,Active Directory 所做和引入的“其他事情”的数量(层、复制、扩展、“生产”网络域上的帐户的安全问题)是,恕我直言,不适合用户数量和所需的相对简单性。方式过于矫枉过正和复杂。
通常,您应该为应用程序用户使用 AD - LDS (ADAM)。没有许可费用,并且 LDS 中的用户不能用作服务器本身的安全凭证。这是一件好事。如果您的用户目录遭到破坏,那么您的操作目录仍然可以使用。
您应该使用 AD 来管理机器。确保没有本地帐户,使用组策略限制安全设置。(我想大多数人会惊讶这有多紧。)
这些包括:
事实是……如果这是一个新系统。LDS 将是放置您的用户的好地方。它具有出色的密码策略、密码复杂性、等等等等……你真的应该考虑使用 SAML 或 OpenID……如果你有联合的用户和不联合的用户,你仍然应该针对声明进行编码建模并抽象出身份验证提供程序特定的代码。
您可以为此使用 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 脱机,则不会更新。
我不想把它带到你已经考虑过或因其他原因拒绝的方向,但是 AD 会给你什么像 RADIUS 这样的东西不会?您可能可以轻松设置一个可扩展的 RADIUS 服务器,我想我已经看到一些将使用 MySQL 之类的数据库作为后端的服务器,允许您轻松扩展和复制它,而无需 AD 为您提供的附加功能听起来就像你不会使用一样。RADIUS 仅用于身份验证任务......但请随时在评论中纠正我......
我们曾经在很多个月前工作过的一些企业中将它用于拨号用户,但没有尝试使用 Web 身份验证。
该说明声称,即使是旧的 Windows Server 2000 也在每秒对 500 万个对象的目录执行 2,376 次基于 LDAP 的全树搜索。他们的测试硬件非常简单。
无论如何,我认为 AD 是可靠身份验证的最佳解决方案,因为它具有很强的可扩展性(您可以在需要的地方拥有尽可能多的域控制器),并且安全。它是为身份验证和帐户管理而设计的,现在它的发展已经相当成熟。
我不确定许可,但我认为如果您仅使用 AD 进行身份验证,则不需要为用户提供 CAL。但我认为您需要针对您的特定场景查询 MSFS。
与您将同时服务的用户数量相比,用户数量无关紧要。如果您有 100 万用户,但您每天只有一次登录,您将不需要很多硬件。这还取决于您如何进行身份验证。如果您使用的是 HTTP 身份验证,您可能必须对每个请求进行查找。但是,如果您使用 HTML 表单,则可以对登录请求进行查找,并为以下请求返回一个 cookie,这意味着您执行的身份验证查找要少得多。
你想看看 AD 的横向扩展情况如何;在复制成为问题之前,您可以有多少台服务器为请求提供服务,无论是维护还是产生收益递减增加更多。
此外,您能否添加缓存以加快查找速度。这对于 HTTP 身份验证设置更为重要。
不要忘记许可。您应该获得一个Windows Server 外部连接器,因为 1M CAL 将非常昂贵。
Microsoft 的许可女士帮助解释了外部用户是什么。
您的问题缺少很多细节:
在我们对硬件要求做出判断之前,我们实际上需要大量信息。
我不知道有关使用 Commerce Server 扩展 Active Directory的文章是否包含任何通用的 AD 扩展提示和技巧。值得快速浏览一下吗?
如果这纯粹是为了对外部用户进行身份验证——为什么还要打扰 AD?