如何在法拉第 (Rails 5) 中加密 JSON 有效载荷
How to encrypt a JSON payload in Faraday (Rails 5)
我对 Rails 有点陌生,使用法拉第 gem 进行 API 通话,所以请保持温柔。 :)
我们在 Rails 应用程序中对所有服务器发起的 API 调用使用法拉第 (gem)。我们使用的一项外部服务要求我们使用服务提供商提供的 RSA 4096 public 密钥加密所有有效负载。
通常我们使用法拉第的方式是:
connection = Faraday.new(:url: url) do |faraday|
faraday.request :url_encoded
faraday.response :logger
faraday.adapter Faraday.default_adapter
end
parameters = '{
"key1": "value1"
"key2":XXXXXX,
.
.
}'
response = connection.post do |req|
req.url some_url
req.headers['Content-Type'] = 'application/json'
req.body = <encrypted JSON parameters given in **parameters**>
end
我想知道我们是否可以在将 参数 对象转换为 JSON 并将其传递到 req.body 属性,或者如果有更系统的方法来做同样的事情。
非常感谢您的帮助!
是的,为什么不呢?我可能会遗漏一些东西。
您可以加密任何字符串并通过请求的 body 传递它。但是,如果这样做,您可能希望根据 application/json header.
保持在适当的内容类型内
JSON:
{
name: "Alice",
age: 25
}
我们可以加密每个 key-value 对:
{
name: gtLHeq+OR9JDvAlTFN98VZlqCrrRvFITw5TnFwGHCB0+8=,
age: gt9gI3dSssl5BOcSpYr0egkye98VZlqCrrRvFITw5TnFwGHCB0+8=
}
或者我们可以加密整个 JSON 块:
{
secret: W29Ud80egkye98VZlqCrrRvFITw5TnFwGHCB0+8=
}
我将加密的 JSON 包裹在更多 JSON 中,这样我们就不会破坏 content-type。但我不确定您的第 3 方服务是否具备解密整个块的能力,或者它是否在 JSON 中寻找特定的 key-value 对并解密它们。这是重要的区别。您几乎可以加密任何内容并通过网络传输,但如果侦听器没有条件以该格式解密您的数据,您将被迫符合他们的格式。
我对 Rails 有点陌生,使用法拉第 gem 进行 API 通话,所以请保持温柔。 :)
我们在 Rails 应用程序中对所有服务器发起的 API 调用使用法拉第 (gem)。我们使用的一项外部服务要求我们使用服务提供商提供的 RSA 4096 public 密钥加密所有有效负载。
通常我们使用法拉第的方式是:
connection = Faraday.new(:url: url) do |faraday|
faraday.request :url_encoded
faraday.response :logger
faraday.adapter Faraday.default_adapter
end
parameters = '{
"key1": "value1"
"key2":XXXXXX,
.
.
}'
response = connection.post do |req|
req.url some_url
req.headers['Content-Type'] = 'application/json'
req.body = <encrypted JSON parameters given in **parameters**>
end
我想知道我们是否可以在将 参数 对象转换为 JSON 并将其传递到 req.body 属性,或者如果有更系统的方法来做同样的事情。
非常感谢您的帮助!
是的,为什么不呢?我可能会遗漏一些东西。
您可以加密任何字符串并通过请求的 body 传递它。但是,如果这样做,您可能希望根据 application/json header.
保持在适当的内容类型内JSON:
{
name: "Alice",
age: 25
}
我们可以加密每个 key-value 对:
{
name: gtLHeq+OR9JDvAlTFN98VZlqCrrRvFITw5TnFwGHCB0+8=,
age: gt9gI3dSssl5BOcSpYr0egkye98VZlqCrrRvFITw5TnFwGHCB0+8=
}
或者我们可以加密整个 JSON 块:
{
secret: W29Ud80egkye98VZlqCrrRvFITw5TnFwGHCB0+8=
}
我将加密的 JSON 包裹在更多 JSON 中,这样我们就不会破坏 content-type。但我不确定您的第 3 方服务是否具备解密整个块的能力,或者它是否在 JSON 中寻找特定的 key-value 对并解密它们。这是重要的区别。您几乎可以加密任何内容并通过网络传输,但如果侦听器没有条件以该格式解密您的数据,您将被迫符合他们的格式。