azure - 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 不记名令牌流程对我来说是最优化的。流程是这样的:
- 从 azure ad 获取我们自己的应用程序令牌
- 提取用户电子邮件并为 salesforce 创建新的 JWT 并使用私钥对其进行加密
- 使用此 JWT 令牌调用 salesforce 誓言端点
- 作为回应,salesforce 将返回 access_token
- 使用此访问令牌代表实际用户或服务用户进一步调用 salesforce API。
现在的问题是: 我的理解是否正确,还有比 JWT 不记名令牌流程更安全/最佳的流程来解决这个问题吗?Salesforce 令牌只是使用用户电子邮件创建的,任何知道用户电子邮件的人都可以代表他生成令牌,如果他得到访问私钥。
可以使用这个流程吗?我的意思是从安全角度?任何人都可以清除这个吗?
Salesforce 还在 Azure Ad 中注册为企业应用程序。可以利用它来授予访问令牌而不是手动创建它们吗?
我正在使用 Azure AKS 托管微服务。我应该在哪里保存 private.key 文件并允许 spring boot 应用程序读取它?私钥将掌握在开发人员手中,这可能是安全漏洞。
解决方案
推荐阅读
- javascript - 如何在 Typescript 上设置 location.href 而不会出错?
- javascript - 如何在不刷新页面的情况下使用 JavaScript 显示当前时间
- python - 正则表达式定位编号列表不起作用
- node.js - 当只有 1 个 google 帐户登录时,Passport Google Oauth2 不提示选择帐户
- elasticsearch - 在logstash或弹性搜索中加入两个单独的日志文件以在kibana中的一行中查看?
- kotlin - 插入以使用 Kotlin 加入表 Spring JPA
- jenkins - 如何将 perScenarioTimeout 设置为 uftScenarioLoad?
- python - 有没有办法使用 Python 创建一个简单的基于命令行的文本编辑器,例如 Nano?
- python - 如何使用日期时间索引删除 DataFrame 中的多个时间段?
- javascript - 设置范围保护每周基于时间的触发