Sto creando un servizio RESTful per fornire dati a un'applicazione Web. Ho due domande correlate su questo.Autorizzazione in API HTTP RESTful, 401 Autenticazione WWW
1. Come gestire richieste non autorizzate?
io ho intenzione di rispondere alle richieste con i seguenti codici:
- è la risorsa aperta e ha trovato? 200 OK
- È necessario essere autenticati per accedere alle risorse? 401 Non autorizzato
- Non hai accesso a una categoria di risorse? 403 Forbidden
- Hai accesso a una categoria di risorse, ma non a questa risorsa specifica? 404 non trovato per impedire alle persone di conoscere l'esistenza di una risorsa a cui non hanno accesso.
- La risorsa non esiste? 404 Not Found
E 'questo un modo consigliato per un servizio RESTful comportarsi?
2. Quale intestazione WWW-Authenticate
deve fornire 401 risposte?
ho letto su Wikipedia (probabilmente non la risorsa più accurata, ma funziona per me) che una risposta 401 must includere un'intestazione WWW-Authenticate
, tuttavia dopo ulteriori ricerche non ho potuto davvero trovare qualsiasi risorsa che ha dichiarato ciò che questo valore significa e cosa dovrebbe essere.
Ho trovato diverse domande su SO e argomenti del forum su questa intestazione e sembrano tutte relative a OAuth, suggeriscono di non utilizzare codici di stato 401 o di dire che si può semplicemente inventare qualcosa.
Qual è il valore corretto che deve contenere questa intestazione?
Quindi, nello scenario in cui dispongo di un servizio Web che fornisce dati per un'applicazione Web, che aspetto ha l'intestazione? Qualcosa in termini di 'Forms realm =" http://my.domain.com/ "'? – Aidiakapi
Sì, potrebbe essere simile a questo. Il regno non ha bisogno di essere il nome di dominio. Può essere qualsiasi stringa. Il valore identifica solo un gruppo di risorse che condividono le credenziali. In questo modo è possibile raggruppare le risorse protette su un server in più spazi di protezione, ciascuno con il proprio schema di autenticazione e/o database di autorizzazione. – benjiman