我有一个 SP2016 网站集。农场的组成如下:域服务器:DomainSPxxx 前端服务器:FrontendSP 数据库服务器:DatabaseSP
网站集有两个扩展:
默认 (http) - 通过 Windows 身份验证访问 DomainSPxxx.com 域
具有混合访问权限 (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