我有一个 REST 资源,其中包含 GET“屏蔽”敏感数据,例如此 API 由应用程序 UI 使用
获取 /api/客户
{
"Name":"John"
"AccountNumber" :"XXXXX123"
}
该客户 API 反过来通过另一个 REST API 调用记录系统。记录 REST 调用的系统非常昂贵并且支持非常低的 TPS。所以我们不能频繁使用当客户做一个动作的时候,帐号必须要传给另一个资源 POST /api/transactions
Input
{
"AccountNumber":"XXXXX123"....
}
Output
{
"transaction":"something"....
}
记录系统无法理解被屏蔽的 AccountNumber。所以我能想到的选择是——
- 在服务器会话中设置未屏蔽帐户,并将密钥和已屏蔽帐户传递给客户 API 的前端。前端调用事务API时会传递key
- 使用服务器缓存而不是服务器会话
- 使用客户标识符密钥加密帐号,SALT(如反向代理在每个请求中注入的客户属性)将加密的帐号传递给前端。在客户操作时,前端会将加密的帐号传递给后端。后端将解密该字符串并提取帐号和客户标识符,并将客户标识符与反向代理注入的客户标识符匹配。
选项 1 和 2 绝对是糟糕的设计。我倾向于选项 3。
此类要求的成熟模式是什么?