Apache - autenticação básica LDAP verificada mas não obrigatória

1

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.

    
por Iacopo 12.12.2017 / 10:05

0 respostas