我们正在具有多个单独域林的环境中实施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成员资格提供程序是否可以遍历域信任以对用户进行身份验证,如果是,那么还需要配置哪些才能实现这一目标?
提前致谢!