Sto lavorando su un'API destinata a essere utilizzata da un altro sistema. I dati non sono di proprietà della macchina richiedente e degli utenti a cui i dati appartengono non stanno guidando la transazione. Si potrebbe pensare ad esso come lo stesso caso d'uso di un servizio web ospedaliero che trasferisce dati sensibili e le persone che possiedono i dati non sono coinvolti nella transazione. Oppure un servizio web bancario che viene utilizzato per eseguire query analitiche su molti dati dell'utente, ma gli utenti nei dati non stanno guidando la transazione.
problema
Sto studiando autenticazione e amp; Opzioni di autorizzazione per questo caso d'uso, ma quasi tutti i documenti che trovo per la sicurezza delle API passano a OAuth 2 ea volte OpenID Connect. Non credo che siano applicabili, se leggo correttamente le RFC. Sembrano concentrarsi sulla delega dell'autenticazione a una terza parte con il presupposto che un utente verrà quindi autenticato.
Soluzione che sto considerando
Ho preso in considerazione un token HMAC nell'intestazione Autorizzazione della richiesta in cui i dettagli della richiesta sono codificati e firmati con una chiave che l'app client è stata data una volta. Lo stesso flusso dello schema di autenticazione di AWS per le proprie API. L'unica cosa a cui posso pensare è più sicura di questo è lo scambio di chiavi di crittografia pubbliche e il client che cripta la richiesta con la mia chiave pubblica e mi fa crittografare la risposta con la loro (PGP / RSA Encryption). Entrambe le opzioni sarebbero su TLS con verifica del certificato. Sto reinventando la ruota qui? Esiste uno standard comparabile di regole da seguire per questo caso d'uso?
Side-note sulla crittografia su SSL
Ho sentito dire che una volta la crittografia su SSL era ridondante. Ho appena visto Moxie Marlinspike lacerare SSL a Defcon attraverso un uomo nel mezzo e lo spoofing della catena di certificati. Esiste sicuramente una grande differenza tra il processo di scambio dei certificati incluso in SSL che si verifica in ogni sessione e quello che avviene solo una volta per ciò che ho delineato sopra.