Salesforce是否支持获取一次性API密钥或access_token访问API接口
Salesforce 无用户名密码获取API访问凭证的可行方案
Salesforce体系内没有传统意义上长期固定的静态API Key,也不支持永久有效的access_token(默认有效期最多几小时),但有多种成熟的OAuth 2.0授权方案可以实现无需每次传入用户名和密码即可获取有效的access_token访问API,使用体验和固定API Key一致,具体可选方案如下:
方案1:使用刷新令牌(Refresh Token)无感刷新access_token
- 首次获取令牌时,在你当前使用的用户名密码流或其他OAuth授权流的请求参数中,加上
scope=refresh_token,同时提前在Salesforce的Connected App配置中允许返回刷新令牌、设置刷新令牌的有效期(可配置为永久有效,除非手动撤销) - 首次请求成功后会同时返回
access_token和refresh_token,后续需要换新的access_token时,仅需要向令牌接口传入client_id、client_secret、refresh_token三个参数即可,无需再传入用户名和密码 - 适用场景:需要和用户身份绑定的API调用场景
方案2:使用JWT Bearer授权流(服务间调用最优方案)
- 该方案完全不需要存储和传入用户名、密码,仅需要通过非对称密钥签名即可换取
access_token - 配置步骤:
- 在Salesforce中创建Connected App,开启OAuth设置,上传你生成的RSA公钥,开启JWT流权限,给对应的集成用户预授权该Connected App的访问权限
- 你的服务端保管好RSA私钥,每次需要获取
access_token时,用私钥生成符合Salesforce规范的JWT串,向令牌接口提交即可直接获取有效的access_token
- 适用场景:后台服务、自动化脚本等无用户交互的服务到服务API调用场景
注意事项
- 所有方案都需要提前在Salesforce管理后台配置对应的Connected App的OAuth权限、令牌有效期、授权范围等参数
- 敏感凭证(刷新令牌、RSA私钥)不要硬编码在代码或配置文件中,建议存入专属的密钥管理服务中,降低泄露风险
内容的提问来源于stack exchange,提问作者Munesh Kumar
相关产品推荐
相关产品推荐

