如何在法拉第中加密JSON有效负载(Rails 5)

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

我对Rails有点新,并使用法拉第宝石进行API调用,所以请保持温和。 :)

我们在Rails应用程序中使用Faraday(gem)进行所有服务器发起的API调用。我们使用的外部服务之一要求我们使用服务提供商提供的RSA 4096公钥加密所有有效负载。

通常我们使用法拉第的方式是:

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属性,或者是否有更系统的方法来执行相同操作。

非常感谢您的帮助!

ruby-on-rails json ruby ruby-on-rails-5 faraday
1个回答
0
投票

是的,为什么不?我可能会遗漏一些东西。

您可以加密任何String并将其传递到请求的主体。但是,如果您这样做,您可能希望根据您的application / json标头保持适当的内容类型。

JSON:

{ 
     name: "Alice", 
     age: 25 
}

我们可以加密每个键值对:

{ 
     name: gtLHeq+OR9JDvAlTFN98VZlqCrrRvFITw5TnFwGHCB0+8=, 
     age: gt9gI3dSssl5BOcSpYr0egkye98VZlqCrrRvFITw5TnFwGHCB0+8= 
}

或者我们可以加密整个JSON块:

{ 
     secret: W29Ud80egkye98VZlqCrrRvFITw5TnFwGHCB0+8= 
}

我将加密的JSON包装在更多的JSON中,这样我们就不会破坏内容类型。但是我不确定你的第三方服务是否能够解密整个块,或者它是否在JSON中寻找特定的键值对并对其进行解密。这是重要的区别。您可以加密几乎所有内容并通过网络发送,但如果监听器没有条件以该格式解密您的数据,则您必须遵守其格式。

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