基本上我们有一个iOS应用程序和一个Server应用程序。 iOS应用程序希望从SharePoint获得最终用户的一些搜索结果,因此iOS应用程序会向我们的服务器应用程序提交搜索请求,该应用程序将使用系统帐户在SharePoint上使用Web服务(客户端API)执行搜索。对我们来说,问题是如何在iOS应用上为最终用户进行搜索结果的安全修整。
我们可以将最终用户的用户名和密码从iOS应用程序发送到我们的服务器,并使用该凭据来调用搜索Web服务,但是不希望这样做。我还在SharePoint上查看了自定义安全修整(CST,Trim SharePoint Search Results for Better Security,看起来它不能解决我们的问题,因为在ISecurityTrimmer2:CheckAccess方法,执行查询的用户声称是系统用户,但是我们需要能够回调我们的应用程序以找出真正的用户,这似乎不实用:
public BitArray CheckAccess(IListdocumentCrawlUrls,IDictionarysessionProperties,IIdentitypassedUserIdentity)
关于我们如何在这里针对我们的情况实施修剪的任何其他想法?非常感谢任何建议。
顺便说一下,iOS应用程序确实直接使用SharePoint Web服务,但是我们要避免这种情况,因为我们希望搜索API是通用的而不仅限于SharePoint,我们也在考虑发送身份验证标头/从iOS应用程序到服务器的cookie用于搜索,但在我看来,它可能不是一个好主意,可能会想到安全黑客。
更新1: 基于这篇帖子:Security trimming in search web service和Creating a Custom Pre-Security Trimmer for SharePoint 2013,有ISecurityTrimmerPre,我们可以向用户添加更多声明,理论上,它可以回调我们的Web服务,将声明添加到正确的最终用户,尽管我如果同时进行多次搜索,我真的不知道如何知道此搜索的最终用户。另一个担心是,我们似乎也会影响一般的SharePoint搜索,因为我们不想将自己添加到搜索查询管道中。