Modifique o cabeçalho de resposta WWW-Authenticate no Apache

Se você criar uma API REST usando Basic authentication, não deseja que o navegador exiba o pop-up de autenticação básica se o usuário digitar o nome de usuário / senha incorretos em seu front-end, fazendo com que a chamada AJAX para o back-end “falhe”.

Se você acessar sua API REST sem nenhuma credencial (ou incorreta), o servidor responderá com um 401código de status e um WWW-Authenticatecabeçalho como este:

curl -I http://localhost/host/events

HTTP
/1.1 401 Unauthorized
WWW
-Authenticate: Basic realm="SendRegning"
(...)

Se seu back-end servir para isso, alguns navegadores (MSIE e Chrome) mostrarão um pop-up como este:

Cenário

Você não quer isso, então o que fazer?

Acabamos ajustando o Apache, usando a diretiva Header :

Header always edit WWW-Authenticate ^Basic SR_Basic

Isso significa: edite o valor do cabeçalho da resposta (se existir) e, se começar com Basic, mude para .WWW-AuthenticateBasicSR_Basic

Se você quiser uma solução substituta, pode procurar uma específica , como esta:User-Agent

BrowserMatch SendRegning/1.0 keep_auth

e adicione uma condição à diretiva anterior:

Header always edit WWW-Authenticate ^Basic SR_Basic env=!keep_auth

Isso significa que se você “identificar” seu navegador assim:

curl -I -A "SendRegning/1.0"  http://localhost/host/events

você obterá o cabeçalho padrão, não alterado novamente.WWW-Authenticate


Requisitos

Você precisa carregar o headers_modulepara que isso funcione e você e precisa de pelo menos Apache 2.2.4.

BrowserMatchprecisa setenvif_moduleser carregado.


aviso Legal

Não usamos SSL em nosso ambiente de desenvolvimento, portanto, certifique-se de criptografar todo o tráfego ao fazer a autenticação básica em liberdade.