apache: passar variáveis env

1

Eu tenho uma regra de reescrita para buscar alguns dados do URL remoto (em um servidor diferente sob meu controle) da seguinte forma:

RewriteRule ^/.+/remote_dir/(.*) http://11.22.33.44/remote_dir/$1 [P]

O servidor remoto possui autenticação htpasswd, que precisa ser ignorada para essa solicitação específica. Eu não posso usar o allow do ip como o ip log é do gateway (que permitirá o acesso sem senha a toda a máquina atrás do gateway).

Então, eu tentei passar a variável env com este pedido e com base na sua autenticação bypass do valor (11.22.33.44 também está no apache).

Mas não consigo encontrar uma solução para esse problema. Eu sei que existem outras soluções como o uso de autenticação ldap comum / ou mesmo usuário / passar em ambos os servidores, mas eu não quero usá-lo como 11.22.33.44 está em um ip público (infra-estrutura de nuvem).

Por favor, me ajude com uma solução para isso.

    
por Tevez G 20.06.2012 / 13:01

1 resposta

3

Você não pode passar variáveis de ambiente pelo HTTP. Você tentou o proxy com os tokens de autenticação no URL:

RewriteRule ^/.+/remote_dir/(.*) http://user:[email protected]/remote_dir/$1 [P]

Como alternativa, você pode anexar um token de autenticação à string de consulta, algo como:

RewriteRule ^/.+/remote_dir/(.*\?.*)$ \
     http://11.22.33.44/remote_dir/$1;auth=s3cr3t [P,S=1]
RewriteRule ^/.+/remote_dir/(.*) \
     http://11.22.33.44/remote_dir/$1?auth=s3cr3t [P]

No entanto, a autenticação HTTP, mesmo no modo digest, não é exatamente segura.

    
por 20.06.2012 / 13:58

Tags