首页 > 解决方案 > Salesforce 与 Spring 微服务的集成

问题描述

我正在使用 JWT 不记名令牌流从 salesforce 获取访问令牌,然后使用此访问令牌调用 salesforce API。我已经使用 OpenSSL 生成了一个私钥和证书,并在 salesforce 连接的应用程序上上传了一个数字证书。 https://help.salesforce.com/articleView?id=sf.remoteaccess_oauth_jwt_flow.htm&type=5

用例:

我们只使用 salesforce 数据库而不使用它的 UI。我们的服务与销售人员交互,而 UI 与销售人员 API 没有直接交互。我们的内部服务需要调用salesforce Api 的保留用户上下文。

我经历了许多 OAuth 流程,但JWT 不记名令牌流程对我来说是最优化的。流程是这样的:

  1. 从 azure ad 获取我们自己的应用程序令牌
  2. 提取用户电子邮件并为 salesforce 创建新的 JWT 并使用私钥对其进行加密
  3. 使用此 JWT 令牌调用 salesforce 誓言端点
  4. 作为回应,salesforce 将返回 access_token
  5. 使用此访问令牌代表实际用户或服务用户进一步调用 salesforce API。

现在的问题是: 我的理解是否正确,还有比 JWT 不记名令牌流程更安全/最佳的流程来解决这个问题吗?Salesforce 令牌只是使用用户电子邮件创建的,任何知道用户电子邮件的人都可以代表他生成令牌,如果他得到访问私钥。

可以使用这个流程吗?我的意思是从安全角度?任何人都可以清除这个吗?

Salesforce 还在 Azure Ad 中注册为企业应用程序。可以利用它来授予访问令牌而不是手动创建它们吗?

我正在使用 Azure AKS 托管微服务。我应该在哪里保存 private.key 文件并允许 spring boot 应用程序读取它?私钥将掌握在开发人员手中,这可能是安全漏洞。

标签: azurespring-securityazure-active-directorysalesforcespring-security-oauth2

解决方案


推荐阅读