Я запускаю приложение ruby on rails (rails 4.x) и у меня есть защищенный ресурс, который требует аутентификации с использованием сертификата клиента. Мне нужно заставить клиента пройти аутентификацию с его сертификатом. Возможно ли это даже с контроллера rails или это обрабатывается на верхнем уровне с сертификатом моего сервера?
Я могу делать запросы от rails на другой сервер и аутентифицироваться с помощью моего сертификата rails, однако другойОбход не представляется возможным.
Вот как я аутентифицируюсь из моего приложения rails на другой сервер
# Example usage:
req = HttpsReq.new
response = req.http.request Net::HTTP::Get.new "/api/users"
require 'openssl'
require 'net/http'
require 'json'
class HttpsReq
DEFAULT_OPTIONS = {
use_ssl: true,
verify_mode: OpenSSL::SSL::VERIFY_PEER,
keep_alive_timeout: 30,
ssl_version: :TLSv1_2,
ca_file: File.join(File.dirname(__FILE__), "cacert.pem"),
cert: OpenSSL::X509::Certificate.new(Base64.decode64(ENV['CLIENT_CERT_PEM'])),
key: OpenSSL::PKey::RSA.new(Base64.decode64(ENV['CLIENT_KEY_PEM']), ENV['CLIENT_KEY_PASSWORD'])
}
def initialize(http = nil)
if http
@http = http
else
@http = Net::HTTP.start(ENV['SECURE_SERVER'], 8080, DEFAULT_OPTIONS)
end
end
end