2014-09-02 2 views
0

Я использую жемчужину rack-proxy в Rails для запросов прокси на внешний сервер. Дело в том, что внешняя конечная точка требует аутентификации. Как предоставить эту информацию из промежуточного программного обеспечения?Добавление идентификационной информации в промежуточное ПО прокси-сервера Rails

Вот что я до сих пор:

require 'rack/proxy' 

class MyProxy < Rack::Proxy 
    MY_REQUEST = %r{^/path/(.*)} 

    def initialize(app) 
    @app = app 
    end 

    def call(env) 
    if m = MY_REQUEST.match(env['PATH_INFO']) 
     env['PATH_INFO'] = "https://otherserver.org/#{m[1]}" 
     env['HTTP_HOST'] = "otherserver.org" 
     #the otherserver.org endpoint requires authentication 
     super env 
    else 
     @app.call(env) 
    end 
    end 
end 

ответ

1

Зависит от того, какой аутентификации другой сервер использует. Если его просто проверка подлинности HTTP вы можете сделать что-то вроде:

env['Authentication'] = 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==' 

Если значение часть следует спецификации на: http://en.wikipedia.org/wiki/Basic_access_authentication#cite_ref-8

+0

Есть ли какая-либо документация для этих вещей? Я даже не уверен, что я поступаю правильно с 'PATH_INFO' – manojlds