2013-03-25 16 views

risposta

7

401 indica che l'utente è sconosciuto (non autenticato affatto o autenticato in modo errato, ad esempio le credenziali non sono valide).
403 significa che l'utente è noto ma non autorizzato (ovvero non ha il ruolo/gruppo appropriato).

È inoltre possibile interpretare un account registrato ma inattivo come utente con un ruolo specifico come "INACTIVE" e/o privo del ruolo appropriato. 403 è più appropriato nel tuo caso particolare.

1

Se si ritiene che un account che non è stato attivato non debba essere autorizzato, la risposta dovrebbe avere sicuramente un codice di stato 401 Unauthorized.

Penso che anche uno 403 Forbidden sia appropriato, sì. Comunque nel tuo caso penso che 401 Non Autorizzato sia più appropriato.

This answer riassume i due abbastanza bene, citando questo per 401 Unauthorized:

Se la richiesta comprendeva già credenziali di autorizzazione, allora la risposta 401 indica che l'autorizzazione è stata respinta per le credenziali.

Ciò vale sicuramente, poiché il tuo caso suggerisce che hanno fornito credenziali ma quelle credenziali non sono valide in quanto l'account non è stato attivato (che tu ritieni non autorizzato).

+2

La tua risposta precedente, 403 Proibita, non sarebbe più appropriata? Dal momento che il 401 presuppone che l'utente abbia inserito le credenziali sbagliate ... che non hanno. Post scriptum hai un bel sito web –

+0

@JohnathanAu Forse. Tuttavia, non penso che il 401 presupponga che le credenziali date siano necessariamente _wrong_, solo _unauthorized_. –

1

@Josh Davenport: hai descritto l'autorizzazione e l'autenticazione a vicenda: l'autenticazione è il controllo delle credenziali, l'autorizzazione è l'assegnazione di ruolo/gruppo.

D'altro canto, come dichiarato in commento a se stessi, 401 presuppone sia l'autenticazione che l'autorizzazione non riuscite in un'unica soluzione. L'utente deve fallire entrambi per ottenere 401. 403 viene utilizzato nei casi in cui i dati sono completamente vietati e l'autenticazione non viene eseguita/necessaria affatto.

Come analogia: 401 = punto di controllo in cui le credenziali sono controllate. 403 = segnale di STOP, non può entrare.

Per rispondere alla domanda di OP: 401 è logicamente il codice di stato per account non attivato, MA poiché richiede l'implementazione HTTP-Auth, al suo posto potrebbe essere utilizzato 403, se si sta autenticando e autorizzando in altri modi. Personalmente manterrei ancora il 401, dal momento che gli standard non coprono necessariamente tutte le situazioni della vita reale. Oggigiorno quasi nessuno usa HTTP-Auth per scopi di autenticazione.

Problemi correlati