Mi chiedevo se offrire agli utenti la scelta di un metodo per proteggere il loro accesso all'API sarebbe una buona idea.
Sfondo:
Stiamo creando e implementando applicazioni per i nostri clienti, che li aiutano a svolgere il loro lavoro in modo più efficiente. Ciascuno dei nostri clienti sta eseguendo un'applicazione autonoma e abbiamo in programma di creare un'API che consentirà loro di integrare i propri strumenti di terze parti o quello che hai. Non sarà un'API pubblica ma privata.
Ora, durante le ricerche sull'argomento, sono giunto alla conclusione che l'utilizzo dell'autenticazione di base, anche tramite HTTPS, non è una buona idea. Apparentemente, il metodo preferito sarebbe utilizzare HMAC con nonces. Io sono tutto per assicurare il strong, tuttavia la soluzione HMAC presenta un problema: è più complicato e richiede che lo sviluppatore crei prima HMAC e poi lo inserisca in una richiesta, fondamentalmente rendendo l'intera API non facilmente individuabile (come non puoi semplicemente digitare curl https://my.url/api/endpoint/
e vedi cosa succede).
Mi viene in mente che gli utenti di Stripe utilizzano l'autenticazione di base con token come utente, pertanto la richiesta di ricciolo è simile a questa: curl -u sk_test_mysecretrandomkeywhatever https://my.url/api/endpoint/
Questo è il mio libro è un grande vantaggio e se è abbastanza buono per la società di elaborazione dei pagamenti, allora forse andrà bene anche per noi?
Poi ho pensato: e se offrissimo entrambi una scelta? Vuoi utilizzare solo l'autenticazione di base? Bene, puoi usare solo quello. Uno dei tuoi clienti è un maniaco della sicurezza e vuole assicurarsi che il tuo sistema sia sicuro? Abilita l'autenticazione HMAC e inizia a giocare con HMAC, ecc. È una soluzione fattibile o diresti che è una farsa di sicurezza?
Per favore, fai un po 'di luce sull'argomento o almeno indirizzami nella giusta direzione.