Клиентская SSL-аутентификация в контроллере Rails - PullRequest
2 голосов
/ 04 октября 2019

Я запускаю приложение 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...