401 significa non autenticato, 403 significa autenticato ma non autorizzato. Rispondi a quattro domande su una richiesta e ottieni lo stato giusto, con header e codice.
Restituisci 401 Unauthorized quando la richiesta non ha credenziali valide: nessun token, una sessione scaduta, una firma errata. Accedere potrebbe risolvere, e la risposta deve includere un header WWW-Authenticate. Restituisci 403 Forbidden quando sai chi è il chiamante e comunque non può fare questa operazione, quindi accedere di nuovo non cambia nulla.
Unauthorized contro Forbidden
Rispondi a quattro domande sulla richiesta che il tuo server sta rifiutando. Lo strumento restituisce lo stato da inviare, l'header che lo accompagna e un motivo di una riga da mettere in un commento nel codice. Copre anche il caso in cui preferisci non ammettere che la risorsa esista.
401 dice che il server non sa chi sei, o non ha accettato la prova che hai inviato. 403 dice che sa chi sei e la risposta è comunque no.
Sì. RFC 9110 dice che un server che genera una risposta 401 deve inviare almeno un campo header WWW-Authenticate con una challenge, come Bearer per le API a token.
401. Le credenziali non sono più valide, e delle nuove risolverebbero. Una challenge Bearer può indicarlo con error="invalid_token".
Sì. La specifica permette a un server di inviare 404 invece di 403 per nascondere se la risorsa esiste. È una scelta comune per gli id che appartengono ad altri utenti.
Può darsi. I server inviano 403 per qualsiasi rifiuto che considerano definitivo per quella richiesta: regole sugli IP, permessi sui file mancanti, una regola del firewall o un controllo di ruolo fallito. Il corpo della risposta o il log del server di solito dice quale.
verifyToken sta al posto del tuo controllo di sessione o JWT. L'ordine conta: prima autentica, poi autorizza.
Un ramo del codice manda l'utente ad accedere; l'altro spiega il rifiuto.
Sì
No
La richiesta conteneva credenziali (cookie di sessione, token, header Authorization)?
Quelle credenziali erano valide e non scadute?
Questo chiamante può eseguire questa azione su questa risorsa?
Chi non ha accesso deve restare all'oscuro dell'esistenza della risorsa?
Invia questo
Nessuno ha effettuato l'accesso. Chiedi le credenziali con una challenge.
Le credenziali sono arrivate ma sono state rifiutate. Delle nuove risolverebbero.
Il chiamante è noto e non ha il permesso. Accedere di nuovo non servirà.
Il chiamante non ha il permesso e preferisci non rivelare che la risorsa esiste.
Autenticato e autorizzato. Servi la richiesta.
Non richiesta, perché una risposta precedente ha già deciso lo stato.
Inizia gratis · Nessuna carta di credito richiesta