401 significa não autenticado, 403 significa autenticado mas sem permissão. Responda quatro perguntas sobre uma requisição e receba o status certo, com cabeçalhos e código.
Retorne 401 Unauthorized quando a requisição não tem credenciais válidas: nenhum token, uma sessão expirada, uma assinatura inválida. Fazer login poderia resolver, e a resposta precisa trazer um cabeçalho WWW-Authenticate. Retorne 403 Forbidden quando você sabe quem está chamando e mesmo assim essa pessoa não pode fazer aquilo, então entrar de novo não muda nada.
Unauthorized versus Forbidden
Responda quatro perguntas sobre a requisição que o seu servidor está recusando. O seletor devolve o status a enviar, o cabeçalho que vai junto e um motivo de uma linha que você pode colocar em um comentário no código. Ele também cobre o caso em que você prefere não admitir que o recurso existe.
O 401 diz que o servidor não sabe quem você é, ou não aceitou a prova que você enviou. O 403 diz que ele sabe quem você é e a resposta continua sendo não.
Sim. A RFC 9110 diz que um servidor que gera uma resposta 401 precisa enviar pelo menos um campo de cabeçalho WWW-Authenticate com um desafio, como Bearer para APIs com token.
401. As credenciais não são mais válidas, e credenciais novas resolveriam. Um desafio Bearer pode dizer isso com error="invalid_token".
Sim. A especificação permite que um servidor envie 404 em vez de 403 para esconder se o recurso existe. É uma escolha comum para ids que pertencem a outros usuários.
Pode significar. Os servidores enviam 403 para qualquer recusa que consideram definitiva para aquela requisição: regras de IP, falta de permissão em arquivos, uma regra de firewall ou uma verificação de papel que falhou. O corpo da resposta ou o log do servidor normalmente diz qual.
verifyToken representa a sua própria verificação de sessão ou JWT. A ordem importa: autenticar, depois autorizar.
Um caminho do código manda o usuário fazer login; o outro explica a recusa.
Sim
Não
A requisição trouxe credenciais (cookie de sessão, token, cabeçalho Authorization)?
Essas credenciais eram válidas e não estavam expiradas?
Quem está chamando pode executar essa ação nesse recurso?
Quem não tem acesso deve ficar sem saber que o recurso existe?
Envie isto
Ninguém está logado. Peça credenciais com um desafio.
Chegaram credenciais, mas foram rejeitadas. Credenciais novas resolveriam.
Quem chama é conhecido e não tem permissão. Entrar de novo não vai ajudar.
Quem chama não tem permissão e você prefere não revelar que o recurso existe.
Autenticado e autorizado. Atenda a requisição.
Não perguntado, porque uma resposta anterior já decidiu o status.
Comece grátis · Sem cartão de crédito