2014-09-02 61 views
0

我在Rails中使用rack-proxy gem将代理请求代理到外部服务器。事情是,外部端点需要认证。我如何从中间件提供这些信息?在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 2014-09-02 18:12:41