Sto progettando un'API destinata all'uso da un numero molto limitato di client fidati, probabilmente un cluster di server. È possibile accedere all'API solo tramite HTTPS . Per autenticare i client, sto considerando 3 metodi:
- Certificato del client TLS. Il certificato potrebbe essere emesso internamente poiché sia il server che il client sono gestiti dalla stessa organizzazione.
- HMAC-SHA1 su alcuni dati: URL richiesto, data, ... per ogni richiesta. Il MAC verrà inserito nell'intestazione HTTP. In altre parole, una versione più semplice di autenticazione REST di Amazon S3 .
- Autenticazione di base HTTP con nome utente pre-condiviso & password.
Per quanto mi riguarda:
- Il certificato TLS è il "più sicuro" dei tre, mentre l'autenticazione di base HTTP è il "meno protetto". "Più sicuro" è nel senso che il metodo fornisce protezione contro tutti gli attacchi protetti anche da altri e altri ancora.
- HMAC-SHA1 è vulnerabile agli attacchi di replay, tuttavia poiché la comunicazione sarà comunque garantita da TLS, non ci dovrebbero essere problemi.
- L'autenticazione di base HTTP mette sempre il segreto condiviso sul filo (sebbene sia ancora protetto con TLS), quindi ho alcune (forse infondate) preoccupazioni a riguardo.
I miei punti sono corretti? C'è qualche altro problema di sicurezza di cui dovrei essere a conoscenza?