Sharepoint 2013 如何使ADFS用户在搜索结果中可以使用添加在自定义.NET连接器中的自定义ACL的BCS安全修剪项目

Sharepoint 2013 如何使ADFS用户在搜索结果中可以使用添加在自定义.NET连接器中的自定义ACL的BCS安全修剪项目,sharepoint-2013,acl,adfs,bcs,Sharepoint 2013,Acl,Adfs,Bcs,使用ADFS登录SharePoint 2013的BCS安全性调整对于使用自定义连接器的我不起作用。不工作是指通过windows身份验证登录时,有权访问这些BCS记录的用户可以在搜索中看到它们(这是正确的)。使用ADFS登录的同一用户在搜索中无法看到这些相同的记录(这是不正确的) 我的安装程序是Windows2012 R2上的SharePoint 2013,带有ADFS。正在使用自定义.NET连接器通过BCS对SQL server数据库进行爬网。连接器通过添加ACL在爬网时提供安全修剪。ACL是基

使用ADFS登录SharePoint 2013的BCS安全性调整对于使用自定义连接器的我不起作用。不工作是指通过windows身份验证登录时,有权访问这些BCS记录的用户可以在搜索中看到它们(这是正确的)。使用ADFS登录的同一用户在搜索中无法看到这些相同的记录(这是不正确的)

我的安装程序是Windows2012 R2上的SharePoint 2013,带有ADFS。正在使用自定义.NET连接器通过BCS对SQL server数据库进行爬网。连接器通过添加ACL在爬网时提供安全修剪。ACL是基于一个AD安全组创建的,该组的成员为多个AD用户(登录用户就是这些成员之一)。AD安全组作为索赔的一部分包含在索赔中,如下所示:

<saml:Attribute AttributeName="Group"AttributeNamespace="http://schemas.xmlsoap.org/claims">
    <saml:AttributeValue>BCSSecurityGroup1</saml:AttributeValue>
</saml:Attribute>

BCS安全组1
BCSSecurityGroup1是包含用户的AD安全组

奇怪的是,即使我允许每个人访问ACL中的这些记录(即使用WellKnownSidType.WorldSid),ADFS登录仍然无法在搜索中返回这些项目。更奇怪的是,如果我转到有关记录的BCS配置文件页面的url,ADFS用户确实可以访问


问题是。我需要做什么才能让搜索结果反映爬网时添加的ACL安全性

事实证明,这项工作实际上非常简单。首先,为了进行故障排除,将AD安全组更改为单个AD用户(域\用户名)。查看如何在连接器中构建ACL,使用域帐户获取SID,然后使用SID构建ACL。啊哈!因此,缺少的链接是AD FS声明没有映射SID。这是通过使用Fiddler插件在inspector选项卡-下显示声明来确定的

在AD FS中添加SID声明是作为声明规则完成的。从“传递或筛选传入索赔”模板中添加索赔规则。给它一个名称,为传入索赔类型选择“主SID”,并确保选择“传递所有索赔值”。重新启动AD FS服务,让您安心。此外,这还假设SharePoint中的受信任身份令牌颁发者是使用SID声明映射创建的


在我的例子中,由于从广告安全组改回用户名,我不得不在BCS内容源上运行另一个爬网。虽然我还没有对此进行测试,但AD安全组应该以相同的方式工作,只是通过传递组SID。希望这对将来的人有所帮助。干杯

看起来索赔xml被剥离了,但它是这样的: