对MOSS 2007中People Picker返回的结果进行限制 以及关于People Picker的小结

在<<与SharePoint中的PeoplePicker有关的STSADM命令>>和<<People Picker 处理过程>>两篇文章中, 我们介绍了MOSS 2007中的关于People Picker中的一些技术点.

其中的命令

stsadm.exe -o setproperty -url http://server:port -pn "peoplepicker-searchadforests" –pv "forest:foo.corp.com;domain:bar.foo.corp.com", domainname\LoginName, P@ssword

 

我们做过介绍, 当时是这样的情况

前提

    1. SharePoint在一个A域中.

    2. 用户在另一个域B中.

    3. A域信任B域, 即A中的资源可以赋予B权限去访问, B也可以访问这样的资源.

 

要求:

SharePoint的People Picker中搜索时可以返回B域中的用户.

后台发生的动作是这样的:

在SharePoint中搜索B的用户, SharePoint用Application Pool的帐号发送LDAP请求到B域的域控, B域域控不信任A域, 故A域的Application Pool账户无权得到LDAP搜索结果. 故无法搜索.

 

解决方案:

使用命令stsadm.exe -o setproperty -url http://server:port -pn "peoplepicker-searchadforests" –pv "domain:A.corp.com;domain:B.corp.com", B\UserB, P@ssword

注意这里的属性值中包含两个domain, 意在告诉http://server:port站点的people picker, 它需要搜索A, 和B两个domain, 搜索B域的时候, 需要用B域中的帐号UserB来向B域的域控请求信息. B域不信任A域帐户, 可你总要信任你自己的域帐户吧. 就这样People Picker拿到了B域中的搜索结果.

 

那么我们再来看第二种需求

 

前提:

    1. SharePoint在A域中.

    2. 用户在A域中, B域中都有.

    3. B域信任A域.

    4. A, B在同一个foreast中.

 

要求:

SharePoint在People Picker的搜索结果中, 两个domain的结果都显示了出来, 我们需要一定要把B域的用户显示出来. 即排除B域用户.

 

解决方案:

使用命令stsadm.exe -o setproperty -url http://server:port -pn "peoplepicker-searchadforests" –pv "domain:A.corp.com"

注意, 这里的配置会告诉people picker只在A的域控中去搜索. 这样就避免了去某更高等级的GC中去搜索, 从而拿到B中的结果.

 

注意, 这时如果你的站点中已经包含了B域中用户submit的一些文档或列表项的话, People Picker中依然会显示这些用户. 因为我们前面的两篇文章介绍过, people picker会现在内容数据库中进行寻找, 再向AD去查询. 这时, 你需要在站点中彻底删除B域中的用户, 具体步骤在<<User Information List- SharePoint中隐藏的用户列表>>一文中有列出.

原文地址:https://www.cnblogs.com/awpatp/p/1957321.html