Non utilizzerei i cookie in un'API REST. FormsAuthentication è un metodo basato su cookie. Il chiamante deve invece fornire credenziali di autenticazione con ogni richiesta in un'intestazione o come parametro di richiesta.
Ad esempio, è possibile utilizzare l'autenticazione di base per trasmettere nome utente e password oppure aggiungere un'intestazione di autenticazione personalizzata con un token di accesso crittografato (che non è molto RESTful). È inoltre possibile implementare OAuth, in cui il richiedente fornirà un token di accesso con ogni richiesta.
Scriverò un codice personalizzato AuthorizeAttribute
per eseguire l'autenticazione nel codice, che offre molto controllo. In alternativa, è possibile utilizzare una classe di base del controller e sovrascrivere il metodo OnAuthorization
.
L'API non deve fornire una verifica della password: in un'applicazione Web, una richiesta non autorizzata in genere reindirizza l'utente a una pagina di accesso. In un'API, la richiesta restituirà semplicemente un codice di errore. Ora è compito dell'applicazione client sfidare l'utente attraverso una finestra di dialogo, se applicabile. In un'app mobile, potresti voler mostrare una finestra di dialogo. In un'applicazione Web con OAuth, è probabile che si desideri reindirizzare a un server di autenticazione.
Se si desidera testare l'API REST, suggerisco di utilizzare REST Console for Google Chrome e cURL. Il primo è più facile per i principianti e viene fornito con una bella GUI mentre cURL offre ancora più fedeltà e molti protocolli.
EDIT
Una nota un po 'pedante: Alcune API, anche quelli di abbastanza grandi provider, per esempio Twitter, restituire codici di stato 401
di volta in volta, in genere omettendo l'intestazione (obbligatoria) WWW-Authenticate
perché non era sua intenzione sfidare il client.
+1 per la console REST per Google Chrome, menzione :) Bello! –
'Non userei i cookie in un'API REST' - D'accordo, tuttavia, potresti usarlo per generare un token sicuro come in [questa risposta] (http://stackoverflow.com/questions/840537/generating-cryptographically- secure-autenticazione-gettoni # 858.724). – James
@James: questo è un ottimo punto. È sicuramente meglio usare un token invece di inviare nome utente e password in continuazione, perché è più semplice isolare il codice di caldaia in quel modo. – mnemosyn