Apache como proxy de autenticação

1

Estamos tentando implementar o proxy de autenticação do Apache httpd. Isso deve proteger o aplicativo que usa a autenticação básica, mas o usuário deve autenticar com a autenticação do httpd (mod_auth_cas no nosso caso).

Eu posso adicionar RequestHeader com o valor autorizado apropriado que envia credenciais ao aplicativo, mas é estático com apenas um usuário que autentica.

Existe alguma maneira de definir o valor RequestHeader com o script? Ou algum outro método para construir tal proxy de autenticação?

Eu já estou considerando o script cgi que irá lidar com a função proxy. Mas isso me parece uma estrada para o inferno.

    
por Lukas 27.11.2014 / 17:53

1 resposta

0

Isso é quase uma solução:

RewriteEngine on

# Create a RewriteMap to do base64 encoding:
RewriteMap base64map "prg:/usr/bin/base64"

# Put the base64-encoded user:password string into an environment variable:
RewriteRule .* - [E=AUTHN:${base64map:%{LA-U:REMOTE_USER}:%{LA-U:REMOTE_PASS}},NE]  

# Put the encoded user:password string into the Authorization header:
RequestHeader Authorization "Basic %{AUTHN}e"

(Consulte os documentos do mod_rewrite para obter uma explicação do motivo pelo qual LA-U é necessário .)

Mas falta uma coisa: a senha do usuário. No exemplo acima, usei a variável de ambiente REMOTE_PASS como se isso fosse definido, mas normalmente não existe essa variável.

Você terá que de alguma forma obter mod_auth_cas para colocar a senha do usuário em uma variável de ambiente, digamos REMOTE_PASS, ou obtê-la de um cabeçalho de solicitação. Sem a senha do usuário, você não tem informações suficientes para definir o cabeçalho de autorização.

    
por 28.11.2014 / 10:14