2014-09-02 2 views
0

레일즈에서 rack-proxy 보석을 사용하여 외부 서버에 요청을 프록시합니다. 외부 엔드 포인트는 인증을 요구합니다. 미들웨어의 정보를 어떻게 제공합니까?레일스 프록시 미들웨어에 인증 정보 추가하기

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