在 Salesforce 中哪里存储授权承载令牌?

问题描述 投票:0回答:2

我们有一个外部供应商,要求我们在与 API 通信时在 http 请求标头中包含不记名令牌。该令牌不应以未加密的方式保留在代码中,那么存储它的最佳位置在哪里?命名凭据类型似乎不支持存储简单的令牌,并且自定义设置选项似乎过于复杂且不必要。这是一个单个令牌字符串,将用于每个 API 调用,无论哪个用户。我在谷歌上搜索了很多,但没有找到一个明显有效的解决方案。

salesforce authorization token bearer-token
2个回答
1
投票

有一些选项,但它们仅限于您作为最终用户的代码。坚定的开发人员/系统管理员最终会了解其价值。

如果您要构建托管包,则可以使用受保护的自定义设置(托管包的代码可以看到它,但客户端代码看不到,甚至系统管理员也看不到)

检查其中一些:

您可以使用 2 个文本字段进行自定义设置,其中 1 个包含加密密钥,1 个包含加密值。看看 Crypto 类。

Blob exampleIv = Blob.valueOf('Example of IV123');
Blob key = Crypto.generateAesKey(128);
Blob data = Blob.valueOf('Data to be encrypted');
Blob encrypted = Crypto.encrypt('AES128', key, exampleIv, data);

Blob decrypted = Crypto.decrypt('AES128', key, exampleIv, encrypted);
String decryptedString = decrypted.toString();
System.assertEquals('Data to be encrypted', decryptedString);

您的初始化向量可以是组织的 ID 或其他易于访问且不太可能更改的内容(我不知道您的供应商的 API 是否有测试和生产端点,但这是一个额外的好处,在沙箱刷新后,这将无法解密,直到您更改自定义设置...您不想将测试消息发送到生产 API),您将生成一次密钥并将其存储在设置中。


0
投票

这是一篇旧帖子,但想检查一下您使用了什么方法?我们有同样的情况,我们想要使用不记名令牌通过在请求标头中传递令牌来连接到第 3 方平台,并且不使用端点 url。谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.