无需任何用户参与的 Salesforce 服务器到服务器集成

Salesforce Server-to-Server integration without any user involved

我正在使用 REST API 与 Salesforce 集成,作为项目的一部分,我需要向 Salesforce 发送更新,这些更新不是用户触发的,而是系统触发的。 因此,我希望在 Salesforce 字段历史记录中看到的不是用户名,而是我们连接的应用程序(进行更新的应用程序)的名称。 我今天看到的是用户名,因为最初使用 OAuth 授权代码流程进行集成的方式。

为了更改项目的那部分,我遵循了 link(用于服务器到服务器集成的 OAuth 2.0 JWT 承载流程):https://help.salesforce.com/articleView?id=sf.remoteaccess_oauth_flows.htm&type=5

为此,我正在尝试为系统生成令牌,而不是为用户生成令牌,但事实并非如此:当我使用从 JWT Bearer Flow 生成的令牌和 运行 更新时,字段历史记录仍然显示用户名。

那我该怎么办? Salesforce 中有哪些选项可以实现我期望的行为? 在我看来,最重要的是为我们的系统提供一个令牌,而不是为用户提供令牌。

谢谢!

每个人都是 Salesforce 的用户。即使您访问未经身份验证的页面(有些联系我们表格?案例或潜在客户捕获) - 它会在特殊访客用户下进行跟踪。

听起来很蠢但是给了你统一的接口来控制权限(Profiles/Permission套)。您希望访客仅访问常见问题解答文章和案例?当然,在配置文件中进行操作,不要对试图猜测正确 URL 的人产生偏执。你认为某个应用程序被黑了吗?您可以像任何其他“用户”一样终止会话。想要只允许在特定时间从特定 IP 登录?当然。

与 JWT 连接的应用程序仍然需要用户名(主要区别在于它“只是”用于签署请求的证书而不是密码)。

最好的办法是创建专门的“Mr System”、“SystemX 集成”帐户。这听起来像是在浪费许可证,但在漫长的 运行 中,你会问“你为什么在凌晨 1 点编辑我的帐户”,如果你使用 SSO 并且它永远失败,你甚至可以将它用作备份帐户...