SIP 407 Proxy Authentication Required: o que significa e como resolver
Resposta curta: SIP 407 Proxy Authentication Required é o desafio de autenticação de um proxy, normalmente o da operadora, que pede o reenvio do INVITE com credenciais digest. Receber um 407 na primeira tentativa é normal. Se o 407 se repete depois do reenvio, as credenciais ou o realm estão errados. Revise a autenticação do tronco no PABX.
| Código | 407 |
|---|---|
| Nome oficial | Proxy Authentication Required |
| Classe | 4xx: falha da requisição |
| Definido em | RFC 3261 |
| Causas Q.850 que costumam vir junto | 21 (Call rejected) |
Como o Monitor trata o SIP 407
A leitura depende do que deve atender o número, a pergunta que a 2N5 responde ao cadastrar cada circuito. Estas são as regras que o produto aplica hoje, geradas da mesma função que julga cada chamada de teste.
| O que deve atender o número | Leitura |
|---|---|
| Uma saudação ou mensagem gravada (a URA) | Sem visibilidade |
| Um tom de teste ou serviço de eco | Sem visibilidade |
| Outro: pode tocar ou ser atendido | Sem visibilidade |
Sem visibilidade quer dizer que a falha está do lado da 2N5, não no seu circuito: o teste não conta contra o circuito, não entra no SLA e não avisa o cliente. A 2N5 é avisada se durar.
O que o Monitor registra para uma URA: A operadora não aceitou a conta de chamadas da 2N5, geralmente por usuário ou senha errados, então nenhuma chamada de teste chegou ao circuito. É um problema de configuração do lado da 2N5, não uma queda deste circuito (SIP 407).
Se a operadora devolve o SIP 407 ao registro da conta de chamadas da 2N5, antes de qualquer chamada, o teste fica sem visibilidade: é um problema do lado da 2N5, não conta contra o circuito e não avisa o cliente.
O que significa o SIP 407 na prática?
Pela RFC 3261, o SIP 407 Proxy Authentication Required é semelhante ao SIP 401, mas indica que o cliente precisa primeiro se autenticar com o proxy. O proxy envia o header Proxy-Authenticate com o desafio digest (realm e nonce), e o cliente reenvia a requisição com o header Proxy-Authorization.
Em troncos SIP, o fluxo normal de uma chamada é INVITE, 407, ACK, novo INVITE com credenciais e, então, 100 Trying e 180 ou 183. Por isso o 407 aparece em quase todo log de chamada de saída e não indica problema sozinho. O sinal de falha, o verdadeiro erro 407 SIP, é o segundo 407, logo depois do INVITE que já trazia credenciais, ou um PABX que nunca reenvia o INVITE. Se o novo desafio traz stale=true, o nonce só expirou e basta tentar de novo.
Causas comuns no Brasil
- Senha ou usuário de autenticação do tronco desatualizados no Asterisk, Issabel, FreePBX ou 3CX.
- Tronco no PABX sem autenticação de saída configurada, de modo que o INVITE nunca é reenviado com credenciais.
- Realm diferente entre o REGISTER e o INVITE, com o PABX usando a credencial errada para o desafio do proxy.
- Usuário no From do INVITE diferente do login de autenticação que a operadora associou ao tronco.
- Tronco por IP que passou a sair por outro IP público, levando o proxy da operadora a exigir credenciais.
- SBC no meio do caminho que remove ou reescreve o header
Proxy-Authorization.
Como diagnosticar
- Capture com
sngrep port 5060e confira se o INVITE é reenviado depois do 407 e se o segundo envio também recebe 407. - No Asterisk ou FreePBX, ative
pjsip set logger on(ousip set debug onno chan_sip) e compare o realm doProxy-Authenticatecom o doProxy-Authorization. - Rode
pjsip show endpoint <tronco>e confira se o endpoint temoutbound_authapontando para a autenticação certa. No chan_sip, revisesecret,defaultuserefromuser. - No 3CX, ative o “Verbose logging” e revise “Authentication ID” e senha do tronco.
- Teste uma chamada logo depois de reiniciar o registro com
pjsip send register <tronco>, para descartar nonce vencido. - Se houver SBC ou firewall com inspeção SIP, capture antes e depois dele para ver se o header de autenticação chega intacto.
O que mandar para a operadora
- Data e hora com fuso horário das chamadas recusadas.
- Número de origem (A), número chamado (B) e o usuário de autenticação do tronco.
- Call-ID de uma chamada afetada.
- Os dois 407 recebidos, com o header
Proxy-Authenticatecompleto (realm e nonce). - O IP público de onde as chamadas saem e quantas tentativas falharam.
- O pcap da captura, quando disponível, sem expor a senha.
Perguntas frequentes
Qual a diferença entre 401 e 407?
Os dois são desafios de autenticação digest e funcionam do mesmo jeito. O 401 vem de um registrar ou do destino final e usa os headers WWW-Authenticate e Authorization. O 407 vem de um proxy no caminho e usa Proxy-Authenticate e Proxy-Authorization. Em troncos, é comum o REGISTER receber 401 e o INVITE receber 407.
O registro do tronco está OK, mas as chamadas recebem 407. Por quê?
O registro e a chamada podem usar credenciais ou realms diferentes, e alguns PABX só respondem ao desafio do INVITE se o tronco tiver autenticação de saída configurada. Também acontece quando o INVITE sai com um usuário no From diferente do esperado pela operadora. Compare o Proxy-Authorization do INVITE com o Authorization do REGISTER.