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

时间:2020-04-17 00:16:54

标签: salesforce authorization token bearer-token

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

1 个答案:

答案 0 :(得分:0)

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

如果要构建托管程序包,则可以使用受保护的自定义设置(托管程序包的代码可以看到它,但客户端代码看不到,甚至是sysadmins)

检查其中一些:

您可以使用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),只需生成一次密钥并将其存储在设置中即可。