Un fornitore di servizi di terze parti sta esponendo un'API di pagamento che dobbiamo integrare nel nostro back-end.
Come comunicazione di trasporto, utilizzeremo questa API utilizzando TLS con certificato client e una rete privata MPLS.
Come framework di autenticazione, la terza parte sta suggerendo Oauth2;
Sto invece suggerendo un'autenticazione "ligther" come un APIKey / ClientSecret.
Perché?
Perché, a partire dalla mia esperienza "limitata", non vedo alcun vantaggio nell'uso di Oauth2 in questo scenario.
- L'API verrà utilizzata da un solo utente del servizio utilizzato dal nostro back-end.
- Non abbiamo alcun livello di autorizzazione (nessun reclamo).
- In Oauth2, per proteggere le credenziali, li usi solo per ottenere un token di accesso e ti autentichi con l'API che lo utilizza; nel nostro scenario, le credenziali non sono credenziali personali ma le credenziali di un singolo servizio fornite dal provider API di terze parti. Perdere loro sarebbe come perdere un APIKey dal mio punto di vista.
- In caso di violazione della sicurezza, dovrai solo revocare l'APIKey; avendo Oauth2, è necessario revocare il token di aggiornamento lasciando il token di accesso concesso ancora valido.
- Questo ci costringerà a creare una libreria di utilità (basata su Restsharp) e tabelle di database per gestire tutto il back and forth imposto dal protocollo Oauth2. Una cosa che ho visto in altri progetti è che questa libreria deve essere "sincronizzata" in caso di accesso concorrente.
Probabilmente mi mancano alcuni punti importanti e la mia semplificazione eccessiva non è ammessa in un servizio cruciale come un'API di pagamento.
Nella tua esperienza, Oauth2 ha alcuni vantaggi rispetto a una "autenticazione di base" in questo specifico scenario?