Le API sono l'interfaccia di accesso alla sorgente delle nostre informazioni. Per questo il capitolo sicurezza è molto importante e discusso. Lo stack su cui poggiamo le API è molto ricco di strati che devono essere adeguatamente configurati per offrire ai consumatori le informazioni necessarie ma devono essere anche fortemente protetti per riconoscere e bloccare richieste non autorizzate e anche, ove necessario, notificare chi di dovere dei tentativi di accesso fuori Policy.
Quando si parla di API si discute spesso di procedure e tecniche di autenticazione delle stesse. Le infrastrutture RESTful hanno particolari proprietà. Nello specifico le più interessanti sono comunemente:
Tipicamente ci sono diversi possibili meccanismi di autenticazione, tra cui più utilizzati e discussi:
Basic Authentication è un tecnica semplice ed efficace che si applica alle interfacce REST per identificare l'utente che sta accendendo al sistema tramite le sue credenziali di accesso al sistema dirette: username e password (nella forma Basic: base64(username:password)).
OpenAuth versione 2 è un tecnica più sofisticata che divide le credenziali di accesso ad un sistema da un sistema di verifica basato su token con una precisa scandenza temporale ed un framework di autorizzazione e refresh a contorno atto a svolgere diversi compiti: il più interessante permettere a attori terzi di sviluppare applicazioni connesse grazie al meccanismo di scope per limitare l'accesso alla sorgente di informazione.
Il mondo IP in genere non ha intrinsecamente un meccanismo di protezione dell'informazione, ovvero quanto mandiamo un messaggio tra A e B in rete questo è in chiaro: chiunque tra A e B accede completamente all'informazione. La rete comunque è stata pensata per livelli, identificati dallo Stack OSI/ISO, e grazie a questi layer è possibile inserire dei sistemi di cifratura delle informazioni per garantire la confidenzialità delle trasmissioni tra sistemi, per esempio grazie alle catene di certificazione.
Vediamo gli ulteriori strati di sicurezza applicabili a livello infrastrutturale e software.