0

我有一个 SP2016 网站集。农场的组成如下:域服务器:DomainSPxxx 前端服务器:FrontendSP 数据库服务器:DatabaseSP

网站集有两个扩展:

  1. 默认 (http) - 通过 Windows 身份验证访问 DomainSPxxx.com 域

  2. 具有混合访问权限 (https) 的互联网 - 具有对 DomainSPxxx.com 域的 Windows 身份验证访问权限以及始终与 DomainSPxxx.com 域关联的 LDAP 提供程序的基于表单的访问权限

当域帐户使用 Windows Auth 进行身份验证时,显示的用户名是:userx@DomainSPxxx.com 当它与 ldap 连接时,它将类似于 '0#.f|ldapmember:userx|userx@DomainSPxxx.com'

在扩展默认情况下,仅使用管理帐户。此扩展专门用于服务/维护活动。例如,对其进行文档搜索爬取。

问题。我开发了一个对 SP 列表执行操作的工作流。鉴于: 正确配置了工作流管理器 正确配置了用户配置文件 这两个服务处于活动状态。该站点的 Worflow 应用程序处于活动状态并正确配置 throw appinv.asxp 页面 StsApplication 池负载配置文件为 true Worflow 可以使用应用程序功能处于活动状态

解释问题在实践中,当启动来自 https 互联网扩展的工作流时,对于执行的每个操作(例如读取记录),就好像系统要求文档库的域用户存在一样。

示例:用户 '0#.f|ldapmember:userx|userx@DomainSPxxx.com' 列表 'TestList' 上的合作者。如果工作流使用用户 '0#.f|ldapmember:userx|userx@DomainSPxxx.com' 对文档库 'TestList' 执行读取操作,则此操作失败,表明存在资源访问问题。我检查了SP日志。下面是一个例外:

        Exception occured in scope Microsoft.SharePoint.SPListItemEntityCollection.GetById. Exception = 
        System.ArgumentException: Element does not exist. 
        It may have been deleted by another user.*
    
    
    

实际上元素存在我尝试使用 Sharepoint api 从 url 启动查询,并连接用户 '0#.f|ldapmember:userx|userx@DomainSPxxx.com' 并返回数据

就好像从工作流进行的调用仅通过使用 Windows auth 进行身份验证的域帐户声明访问权限。在上述示例的情况下,为帐户“0#.f|ldapmember:userx|userx@DomainSPxxx.com”授予对集合的正确权限是不够的,但要使调用正常工作,您必须给予相同的权限帐户 userx@DomainSPxxx.com 的权限。以下是日志的摘录,其中包含一些让我怀疑的记录:

这是我注意到的:

        Medium      Name=Request (GET:https://testsite.domainspxxx.com/_api/web/lists(guid'xxxxxxxxx')/Items(8))
        High        Reached maximum number of failed machines based on ping results for this routing group  
        Unexpected  User-Agent is empty 
        High        Did not find token claim in token. ClaimType: 'scope'.
        High        Did not find token claim in token. ClaimType: 'scp'.    
        High        Did not find token claim in token. ClaimType: 'clientappid'.    
        High        Did not find token claim in token. ClaimType: 'appid'.  
        High        Did not find token claim in token. ClaimType: 'roles'.  
        High        Token is for a windows account. 
        Medium      Couldn't find a user using property 'WorkEmail' of value 'userx@DomainSPxxx.it' 
        High        GetUserProfile_RetrieveUser_Cache ExpectedFailure: Office.Server.UserProfiles. UserNotFoundException: 
                        An error was encountered while retrieving the user profile. at Microsoft.Office.Server.UserProfiles.UserProfileCache.GetUserData
                        (UserProfileManager objManager, Nullable`1 recordId, Guid gAcct, String strAcct, Byte[] bSid, String strEmail, 
                        Boolean doNotResolveToMasterAccount)     at Microsoft.Office.Server.UserProfiles.UserProfile.RetrieveUser(String strAcct, Guid gAcct, Byte[] bSid, 
                        Nullable`1 recordId, Boolean doNotResolveToMasterAccount, Boolean loadFullProfile, Boolean loadColleagueRecordIds, String strEmail) 
        Medium      Leaving Monitored Scope: (UserProfile.RetrieveUserFromCache) Execution Time=8.87822334961566; CPU Milliseconds=3; SQL Query Count=1; 
                        Parent=Executing the user mapping operation in GetMappedIdentityClaim() 
        Medium      Couldn't find a user using property 'SID' of value 'System.Byte[]'  
        Unexpected  SPSecurityTokenServiceManager!EnsureSharePointLogonRequestClaims: InputIdentity doesn't conatin a PrimarySid claim.

Thanks
4

0 回答 0