Как зашифровать полезную нагрузку JSON в Фарадее (Rails 5) - PullRequest
0 голосов
/ 19 марта 2019

Я немного новичок в Rails и использую гем Фарадея для вызовов API, поэтому, пожалуйста, будьте осторожны. :)

Мы используем Фарадей (драгоценный камень) для всех наших серверных вызовов API в нашем приложении Rails. Одна из внешних служб, которую мы используем, требует от нас шифрования всех наших полезных нагрузок с использованием открытого ключа 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 , или если есть еще Системный способ сделать то же самое.

Заранее большое спасибо за помощь!

1 Ответ

0 голосов
/ 19 марта 2019

Да, а почему нет?Я мог бы что-то упустить.

Вы можете зашифровать любую строку и передать ее через тело запроса.Однако, если вы это сделаете, вы, вероятно, захотите остаться в пределах надлежащих типов контента в соответствии с заголовком вашего приложения / json.

JSON:

{ 
     name: "Alice", 
     age: 25 
}

Мы могли бы зашифровать каждую отдельную пару ключ-значение:

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

Или мы могли бы зашифровать весь блок JSON:

{ 
     secret: W29Ud80egkye98VZlqCrrRvFITw5TnFwGHCB0+8= 
}

Я завернул зашифрованный JSON в большее количество JSON, чтобы мы не нарушали тип содержимого.Но я не уверен, что ваша сторонняя служба оборудована для дешифрования всего блока или она ищет определенные пары ключ-значение в JSON и расшифровывает их.Это важное различие.Вы можете зашифровать почти все и отправить его по проводам, но если слушатель не обязан расшифровывать ваши данные в этом формате, вы вынуждены соответствовать их формату.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...