Attualmente sono impegnato in un dibattito e mi sono chiesto quale fosse l'opinione della comunità su questo.
-
Vediamo API REST che richiedono solo l'autenticazione di base (forse HTTP) o OAuth.
-
Vediamo API REST che richiedono anche una firma; contenente il / i segreto / i, data / ora, forse un nonce.
-
Occasionalmente vediamo API REST che richiedono anche i parametri di richiesta (assemblati in un modo specifico) da includere nella firma.
Il numero 3 offre una sicurezza completa (sebbene nella realtà e nella pratica ci sia molto di sbagliato con il primo?), tuttavia, aggiunge una maggiore complessità di implementazione - assemblare i parametri di richiesta in un modo specifico crea una grande opportunità per rovinare tutto e puoi dire addio a "testare rapidamente" l'API.
Il mio responsabile della sicurezza direbbe 'vai con il numero 3, idiota', ma il mio capo usabilità dice 'che è un PITA completo, il numero 2 è sufficiente nel mondo reale e se è usato correttamente - cioè sopra https - non c'è niente da sbagliare '.