如何安全地让 Salesforce 用户自动登录到我的站点

How to securely let a Salesforce user automatically log into my site

我有一个与 SalesForce 集成的 SaaS。我已将所有 SF 用户同步到我的数据库,以便我的本地用户存储一个 SF 用户 ID。

我需要在 SF 中有一个自定义 link,它将把用户带到我的网站并自动登录。错误的做法是在 link 中传递 SF 用户 ID,然后简单地将 SF 用户 ID 与我存储在数据库中的用户 ID 相匹配。确保推荐的 SF 用户获得授权的正确方法是什么?是否有一些我可以从 SF 放入 link 的令牌,然后我可以根据 SF API?

进行验证

有两种方法:

  1. 创建一个 canvas 应用程序,向您的网站发送签名请求。签名的请求将包括当前用户会话的详细信息。您可以使用这些来验证用户确实是他们所说的人。 IE。他们不只是编造了一个 ID,而且他们来自一个活跃的 Salesforce 会话。参见 Verifying and Decoding a Signed Request。这种方法的优点是您可以验证请求是否已使用您的应用消费者机密签署。
  2. 这是一种较旧的方法,随着 canvas 应用程序取代它,Salesforce 不再真正推广它。创建所谓的复合应用程序。这基本上是您外部站点的 iframe,可以在查询字符串中包含会话 ID 和服务器 url(通过 SSL)。使用这些详细信息,您可以回调 Salesforce 并获取会话所有者的用户 ID。

顺便说一下,Salesforce StackExchange 站点是询问 Salesforce 特定问题的好地方。