Autenticação básica somente se um determinado cabeçalho estiver presente na solicitação?

5

Q : desejo ativar a autenticação básica apenas para essas solicitações, que incluem um cabeçalho específico na solicitação.

Caso de uso: Solicite autenticação apenas para determinados clientes cujas solicitações estão chegando por LB (e correspondem nos cabeçalhos definidos pelo LB).

Eu tentei brincar com a diretiva IF, mas não deu certo. Anynone tem um pequeno exemplo de como fazer isso?

    
por Zavior 12.11.2014 / 09:44

1 resposta

9

De acordo com a documentação da diretiva auth_basic , você não pode usar a diretiva em um bloco if , mas você pode usar variáveis como valores.

Portanto, use um mapa para testar condições específicas e use a variável resultante.

map $http_<header_name> $authentication {
    default    "off";
    "~^"       "my_realm";
}


server {

     ...    

    location /foo {

        auth_basic $authentication;
        auth_basic_user_file /path/to/htpasswd/file;

        ...
    }

}

O padrão <header_name> deve ser substituído pelo nome do cabeçalho usando letras minúsculas e sublinhado em vez de traços (por exemplo, My-Header se torna $http_my_header )

    
por 12.11.2014 / 13:01

Tags