我们在具有多个独立域林的环境中实施 SharePoint,这些域林将用于使用基于声明的身份验证对用户进行身份验证。各个域对单个域具有单向信任,该域将充当所有身份验证请求的“根”。我们已经测试了信任并且它确实有效,并且我们的声明身份验证配置似乎也可以正常工作,但是当使用表单身份验证登录到 SharePoint 时,我们只能对显式存在于该根域中的用户进行身份验证。任何受信任的域用户在使用 Active Directory 成员资格提供程序的 GetAllUsers() 方法时不会进行身份验证,也不会进行枚举。
我们已经尽可能地将配置归结为:
连接字符串:
<add name="ADConnString" connectionString="LDAP://therootdomain.org" />
会员提供者:
<add name="ADProvider"
enableSearchMethods="true"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnString"
attributeMapUsername="UserPrincipalName"
connectionUsername="svcact"
connectionPassword="svcpwd" />
正如现在配置的那样,我们能够使用 username@domain.tld 约定对基于表单的用户进行身份验证,但前提是它们存在于信任“树”的根域中。来自其他域的任何用户都无法通过身份验证。我认为值得一提的是,如果我们切换到 NTLM,来自所有受信任域的所有用户都能够进行身份验证;所以我们肯定知道信任正在发挥作用。
我当然在互联网上搜索过,但我一直在寻找相互矛盾的信息。在某些地方,我读到单向信任应该“正常工作”并且不需要特殊配置,并且我的场景应该没有任何问题。在其他地方,我的印象是 ActiveDirectoryMembershipProvider 无法遍历域信任,唯一的方法是编写一个遍历多个单独提供者的客户提供者 - 但我很难接受这一点,因为我们的场景没有看起来很古怪;必须支持……对吧?
所以我的基本问题是Active Directory Membership Provider 能否遍历域信任以对用户进行身份验证,如果可以,还需要配置什么来实现这一点?
提前致谢!