【问题标题】:Where to store a Authorization Bearer Token in Salesforce?在 Salesforce 中的何处存储授权持有者令牌?
【发布时间】:2020-07-30 09:32:36
【问题描述】:

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

【问题讨论】:

标签: salesforce authorization token bearer-token


【解决方案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);

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

【讨论】:

    猜你喜欢
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    相关资源
    最近更新 更多