2012-02-18 3 views
2

우리는 HTTP 인증을 사용하는 레거시 웹 응용 프로그램을 실행하고 있습니다. 이 응용 프로그램을 일부 사용자가 사용할 수 있도록 만들고 싶지만 사용자 이름/암호를 노출하고 싶지 않아 응용 프로그램이 실행되는 서버를 공개하고 싶지 않습니다.역방향 프록시를 사용하여 http 인증을 건너 뜁니다.

이 문제를 해결하기 위해 mod_proxy를 사용하려고합니다. 다음과 같은 구성을 만들었습니다 :

<VirtualHost *:443> 
    # SSL stuff goes in here 
    ServerName "proxy.local" 
    ProxyRequests Off 
    <Proxy *> 
     Order deny,allow 
     Allow from all 
    </Proxy> 
    ProxyPass/http://admin:[email protected]:80/ 
    ProxyPassReverse/http://admin:[email protected]:80/ 
</VirtualHost> 

사용자가 여전히 관리자/암호를 입력하라는 메시지를 제외하고는 작동합니다. Apache가 ProxyPassReserve에 제공된 사용자 이름/암호를 보내도록하고 사용자에게 요청하지 않을 수 있습니까? Apache mod_proxy documentation에서 답변을 찾을 수 없습니다.

답변

2

mod_proxy에서 요청을 전달하기 전에 mod_headers를 설정하고 http Authorization 헤더를 설정해야합니다.

그냥 기본-64 인코딩 관리자 : 암호 문자열과 구성에 RequestHeader 지시어를 추가

RequestHeader set Authorization: "Basic YWRtaW46cGFzc3dvcmQ=" 


<VirtualHost *:443> 
    # SSL stuff goes in here 
    ServerName "proxy.local" 
    ProxyRequests Off 
    <Proxy *> 
     Order deny,allow 
     Allow from all 
    </Proxy> 
    ProxyPass/http://legacy.local:80/ 
    ProxyPassReverse/http://legacy.local:80/ 
    RequestHeader set Authorization: "Basic YWRtaW46cGFzc3dvcmQ=" 
</VirtualHost> 
관련 문제