Windows2000使公司可以将不同的商业单元集成到一个统一的结构中，这个结构就是活动目录森林，这在WindowsNT4.0中是不可能的。许多在NT4.0域中不能共存的商业单元现在可以在活动目录的组织单元(OUs)或域中和平共处。但是正如一些使用单森林结构的人所说，也存在一些商业单元不能共处的场合。有时商业需求或政治原因要求您实现分离的森林。在许多情况下，分离森林中的用户仍然需要访问中心森林中的资源。因此，你需要在中心森林和其他森林之间建立信任关系。Windows2003在不同森林域之间建立信任关系的方法与NT4.0一致。但是WindowsServer2003新的森林信任功能使其变得更简单。
从信息安全的角度观察，域不仅是安全边界，而且还是复制与管理的边界。根域管理员组、域管理员组和企业管理员组的成员可以轻易地访问森林中的任何机器。将资源真正隔离的唯一办法就是将它们放入分离的森林中。
我们不需要放弃只建立单森林的想法，但我们需要改变一下，即：将森林数量控制在最小，并且只在必需时增加森林。关于如何确定是否创建森林的标准，参见微软白皮书“DesignConsiderationsforDelegationofAdministrationinActiveDirectory”(／／／windows2000／techinfo／planning／activedirectory／addeladmin.asp)。这个白皮书清晰地说明了OU、域和森林之间的安全边界，并说明了如何确定是否将商业单元放入分离森林的过程。
什么时候需要分离的森林呢？这在几种情形下需要。最常见的情形是需要保证管理自治(相当于“我不信任您”)。另一种情形是主体的商业单元自己运行Windows2000森林，并且不能立即更新，由于这个森林还需要一段时间，因此你需要找到与它共存的方法。还有一种情形与森林架构有关，请记住架构(例如AD结构定义)在整个森林中共享，如果你要频繁更改架构，你应该在分离的森林中做这些事情，这样只在需要时更改中心森林架构。
在Windows2000的一个森林内，Kerberos安全协议自动建立域间信任关系。Kerberos的一个重要功能是支持信任传递。如果A域信任B域，B域信任C域，则A域自动信任C域。记忆信任传递的简单办法就是记住“你的朋友就是我的朋友”。这个功能使域树的概念成为可能，Kerberos票据自动传递使森林中的一个域可以自动信任其他域。Kerberos在森林中的双向信任也叫“内部信任”。若要更多了解Windows2000的Kerberos技术，参见微软白皮书“Windows2000KerberosAuthentication”(／／／windows2000／techinfo／howitworks／security／kerberos.asp)。
森林之外的信任关系更原始一些。在Windows2000中，Kerberos无法建立跨森林的信任。NTLANManager(NTLM)将建立与其他森林的NT4.0域和Windows2000域之间的信任关系。这些信任称为“外部信任”(第三种信任，即“快捷信任”，使用Kerberos直接连接两个域树的子域，以提高性能)。
外部信任与NT4.0信任有相同的限制：外部信任不如Kerberos信任安全，并且不能传递。因此，你很快会陷入和NT4.0一样的境地，你必须在每个森林的每个域维护信任。
森林信任的两个优点是跨森林认证和授权。跨森林认证使被信任森林中的用户可以登录到信任森林的机器上，而不用重复创建账号。跨森林授权同样使你可以对被信任森林的用户分配权限，以便他们访问信任森林的资源同样无需重复账号。这个行为不会危害森林安全边界，尽管你可以在森林间建立外部信任，但使用基于Kerberos的森林信任极大地减少了森林间所需信任的数量。如果在两个森林的所有域之间建立信任关系可以用下面的公式计算所需外部信任的数量。外部信任总数＝(1单向信任或2双向信任)×（森林A中的域数)×（森林B中的域数)。
也许你会奇怪，为何Windows2003的森林信任可以包含其他森林，而Windows2000的外部信任却不能。在Windows2003中，信任域对象(TDO)描述了外部信任和森林信任的基本信息。在森林信任中，TDO包含一个称为“森林信任信息”的附加属性。这个属性包含远程森林内所有域的信息，树名称以及可选名称后缀。这个信息对于路由认证和查询远程森林是必要的。全局目录(GC)存储这些信息，因此所有域控制器(DC)都可以查询这些信息。
要构建森林信任必须确保两个森林都处于Windows2003的森林功能级别上。两个森林的每一个DC都必须运行Windows2003且每个域都必须升级到Windows2003的域功能级别，别外两个森林也必须升级到Windows2003的森林功能级别。
接下来，两个森林的根域必须可以通过DNS相互查找。如果你在企业Intranet环境下，并且两个森林都已经与公司的DNS集成，则森林的根域可能已经能够互相查找。若要进行检查，请在一个森林的服务器上打开命令提示窗口，运行Nslookup。键入：
然后键入其他森林根域的域名全称(例如forestb。mycompany。com)。如果服务器能够解析这个FQDN，Nslookup会返回该域的授权DC列表。
在根域点右键，选择“属性”，然后选择信任属性，再选择“新信任”启动信任向导。
这个新信任向导是Windows2003新增的。这个向导指引你创建各种类型的信任，有四种目标类型：一个Windows2003或Windows2000域、一个NT4.0域、一个Kerberos5.0领域以及其他森林。这个向导的帮助功能提供了关于信任、功能级别以及用户首选名(UPNs)的附加信息。
向导的第一步是输入被信任森林的DNS或NetBIOS名。正确完成后，下一个对话框将要求你选择外部信任或森林信任。如果森林信任没有出现，应返回到第一步并使用帮助按钮来确定是什么东西没有正确设置。
我们的例子是要设置双向信任。当你具有另一个森林的管理权时，新信任向导可使你创建两个单向信任来组成双向信任。
尽管实现森林信任是直截了当的，但是在多森林环境下，一个错误会导致严重后果。因此在实现森林信任之前，应该进行试验练习。
森林信任对用户不是完全透明的。如果一个森林不包含一个用户的账号，则该用户在这个森林的一台机器登录时，用户在登录对话框中看不到他的账号域列表，他需要输入他的UPN(例如jimbob＠bigtex。net)。微软使用这个设计是因为在多森林环境下，域之间有时可能存在NetBIOS名称冲突。例如，假设forest1。bigtex。net和forest2。bigtex。net在相同的地域，尽管FQDN(namerica。forest1。bigtex。net和namerica。forest2。bigtex。net)是唯一的，但如果森林没有使用相同的WINS名称空间，它们也许都具有一个NetBIOS名为NAMERICA的域。同样，如果你的森林用户不是登录到Windows2003server或WindowsXPServicePack2(SP2)上，则当用户为本地森林资源增加跨森林用户或组时，将看不到用户或组列表。作为替代，必须输入资源的UPN。图7显示了森林A某资源的ACL，其中加入了森林B的用户。访问控制入口(ACE)使用UPN，而不是传统的域＼账号格式。
另一个与UPN相关的重要考虑是森林名称空间冲突。默认情况下，用户的UPN格式为account＠FQDN。例如，JimBob在子域lubbock。bigtex。net中有一个账号，它默认的UPN为jimbob＠lubbock。bigtex。net。你可以使用根域UPN，即jimbob＠bigtex。net。许多公司使用根域的UPN，这样UPN与用户的email地址一致。这在该账号只存在于一个森林中时可以工作，但是如果你在两个以上森林中具有相同账号时会如何呢？公司的每个成员都有一个bigtex。net邮件地址，但在一个森林使用了这个UPN后缀之后，其他森林不能再使用。对于内部，你必须为用户选择唯一的UPN后缀(例如f1。bigtex。net，f2。bigtex。net)。对于外部，你可以为邮件使用bigtex。net。
森林信任是Windows2003的一个重要新功能，它去除了Windows2000的许多限制。对于那些需要将分离森林集合到一起的公司，森林信任功能可以降低从Windows2000升级到Windows2003的花销。
一个常见的需要管理员权限的管理工作是建立从资源域到账号域之间的单向信任。这使你可以将用户账号保留在一个中心位置(即被信任域)，然后为信任域中的资源分配权限。WindowsServer2003有一个称为“IncomingForestTrustBuilders”的新组。这个组的成员可以建立指向本地森林的单向信任关系，并且不需要内置的管理员权利。由于这个功能委派了向内信任的过程，因此对于那些希望由其他组分担创建信任工作的组织很有用处。
Exchange中文站是一个专注讨论MicrosoftExchangeServer/ExchangeOnline/Office365的技术型网站。