Eu preciso do Apache, configurado como Proxy pass, para verificar o cabeçalho Authorization: Basic ...
em um servidor LDAP, configurando um cabeçalho personalizado se existirem credenciais e estiverem corretas, mas transmitindo a solicitação para o servidor downstream mesmo que a autenticação esteja ausente ou seja incorreta .
Eu tentei a seguinte configuração:
<Location ~ /my/path/(.*)/my/resource(/.+)?>
AuthType Basic
AuthName "Login with user id"
AuthBasicProvider ldap
AuthUserFile /dev/null
AuthLDAPURL "my LDAP url"
AuthLDAPBindDN "my bind variables"
AuthLDAPBindPassword ******
RequestHeader set X-Authenticated-User %{AUTHENTICATE_uid}e
SetEnv 1 noauth
<RequireAny>
Require valid-user
Require env noauth
</RequireAny>
ProxyPreserveHost On
ProxyPass http://downstream.server/my/other/path/$1/$2
ProxyPassReverse http://downstream.server/my/other/path/$1/$2
</Location>
Mas dessa forma, o X-Authenticated-User
é sempre (null)
, mesmo com credenciais válidas, provavelmente porque o Apache otimiza e não executa a verificação.
Eu consegui ter (null)
se a senha não for compatível ou não estiver presente.
Meu requisito é que a solicitação seja sempre enviada ao servidor downstream, com o X-Authenticated-User
definido para o nome de usuário fornecido apenas se a senha corresponder.
Eu editei a configuração: se eu comentar a linha Require env noauth
, a autenticação básica funcionará corretamente.