E 'davvero dipende dallo scenario -. È difficile dire senza sapere di più sull'API - ma l'utilizzo dei "token di autenticazione" è tutt'altro che universale, hai ragione che molte API non hanno bisogno (e non li usano). Molte API richiedono semplicemente una chiave API da inviare ad ogni richiesta (spesso tramite HTTPS per evitare che vengano intercettate), o richiedono una chiave API per identificare l'utente e anche una firma digitale con una "chiave segreta" per dimostrare l'identità dell'utente (vedi When working with most APIs, why do they require two types of authentication, namely a key and a secret?).
Nomi utente/password non sono spesso utilizzato nelle API pubbliche perché non sono abbastanza flessibili e non forniscono abbastanza "separazione" tra l'identità dell'utente e l'identità dell'applicazione. Per esempio. ti registri come sviluppatore per utilizzare l'API di Flickr e creare un'app per iPhone che utilizza tale API: vorresti davvero che il nome utente/password dello sviluppatore fossero integrati nell'app? Cosa succede se cambi la tua password in seguito? Che cosa succede se vuoi sviluppare 5 app e tenere traccia dell'utilizzo per loro separatamente ed essere in grado di chiudere qualsiasi app in qualsiasi momento senza influire sugli altri?
Tuttavia, per i casi in cui si desidera veramente identificare solo un utente umano, non un'applicazione (ad esempio un back-end API privato che servirà solo le proprie applicazioni, non un'API pubblica), nella maggior parte degli scenari non lo faccio Non vedo nulla di sbagliato in ciò che hai suggerito, ad es. nome utente/password su HTTPS con ogni richiesta.Oh, a proposito, i token di autenticazione hanno il vantaggio di essere "restrittivi" (possono scadere in un dato momento, possono essere limitati solo a determinate azioni, ecc.), Ma ovviamente questo è utile solo in scenari molto specifici.
ANCHE: Come ha sottolineato l'utente "Dan" sopra, quando si progetta un'API che richiede l'invio del nome utente/password ad ogni richiesta (o con qualsiasi richiesta in realtà, anche se è solo la richiesta di accesso), fare attenzione a come si fa esso. Se utilizzi una tecnica supportata dai browser per impostazione predefinita (ad es. Autenticazione base HTTP), ti stai impedendo di esporre in tutta sicurezza l'API agli utenti di più domini (ad esempio, molto probabilmente la tua API non può mai essere chiamata in modo sicuro direttamente dal browser , cioè dal codice AJAX/Flash/Silverlight).
Questo è un argomento complesso che non può essere spiegato completamente qui, ma ricorda che se l'API si basa su eventuali credenziali di sicurezza che il browser può ricordare e quindi "silenziosamente" si inserisce in ogni richiesta (ad es. , cookie), quindi NON è sicuro abilitare l'accesso tra domini a quell'API utilizzando qualsiasi tecnica cross-domain (CORS, JSONP, crossdomain.xml, ecc.).
tutte le grandi informazioni, ma io sono confuso; 1- Come dovrei quindi inviare la password del nome utente al mio servizio Jersey REST, stavo progettando di inviare in intestazione HTTP. 2- E potresti spiegare cosa intendi con "allora NON è sicuro abilitare l'accesso tra domini a quell'API usando qualsiasi tecnica cross-domain" Non ho un'idea strana che cosa potrebbe significare :) – Spring
Di nuovo, tutto dipende da lo scenario. È un'API pubblica per molti sviluppatori o privata che fornisce solo un back-end per le proprie applicazioni? Stai provando ad autenticare l'applicazione usando l'API o un utente finale umano? Tutto ciò che ho detto nel 2 ° paragrafo (sull'accesso interdominio) conta solo se si tratta di un'API pubblica * e * si desidera che le persone possano accedervi dal browser (ad esempio dal codice AJAX, da Flash o da Silverlight). In tutti gli altri casi, puoi ignorare quella roba. –
qui la mia app è spiegata; http://stackoverflow.com/questions/13997040/jersey-request-for-authentication – Spring