Sto sviluppando un'applicazione per la mia azienda con i seguenti parametri e amp; componenti:
- Applicazione a singola pagina del front-end (SPA) per la prima parte. Questo è implementato in TypeScript (un dialetto di JavaScript) e stiamo sviluppando il codice internamente.
- API REST back-end 1a parte che consente l'accesso a un MongoDB seduto altrove. Questo è implementato in JavaScript e utilizza Express in esecuzione su Node. Stiamo sviluppando il codice internamente. In questo momento tutto ciò che sta facendo è fornire le operazioni CRUD su un'API REST.
- Queste applicazioni devono essere disponibili solo per i nostri dipendenti . Tutti i dipendenti hanno computer portatili Windows 10 che sono stati aggiunti a Azure AD della nostra azienda.
- Non abbiamo un server ADFS locale. Siamo al 100% cloud.
- L'applicazione utilizzerà le risorse di Azure nella sua logica aziendale, come l'API Graph.
- L'applicazione utilizzerà anche altre risorse di terze parti, come la nostra azienda Dropbox.
- L'autenticazione con "l'applicazione" dovrebbe anche autenticarsi con tutte le altre applicazioni di terze parti (come Dropbox) nel modo più trasparente possibile.
- Oggi abbiamo 10 dipendenti. È altamente improbabile che avremo più di 50 dipendenti nei prossimi due anni, quando questa app farà il rev alla versione 2 e assumerò qualcuno per costruirlo.
È giunto il momento di implementare l'autenticazione e l'autorizzazione per la nostra applicazione. L'applicazione deve sia Autenticare che Autorizzare contro Azure AD. Lo scenario ideale è che un utente che ha effettuato l'accesso al computer portatile dell'azienda deve essere autenticato automaticamente dall'autenticità dell'applicazione e che gli utenti su un'altra macchina (pensa al kiosk di aeroporto o hotel) effettueranno l'accesso utilizzando le credenziali di Azure AD. .
La mia domanda riguarda il flusso di concessione OAuth2 da utilizzare in questo scenario.
Ho letto una serie di articoli di Microsoft e OAuth, passati attraverso un certo numero di classi Udemy, ecc., e ho ottenuto consigli contrastanti da queste fonti. Alcuni suggeriscono che le SPA dovrebbero usare una concessione implicita, mentre altri sostengono che se c'è una logica aziendale su un server back-end (e c'è / ci sarà) si dovrebbe usare una concessione di credenziali del client.
Sono uno sviluppatore con molta esperienza, ma non sono un esperto di sicurezza. Nel mio mondo perfetto, esternalizzo la progettazione e l'implementazione del pezzo di autenticazione di questa app a qualcuno che è un esperto di sicurezza, ma il budget è una restrizione importante qui. Semplicemente non è fattibile spendere migliaia di dollari per avere qualcuno che costruisca questo per noi in questa fase.
Tutto ciò detto, dato il design e l'architettura di cui sopra, come dovrebbe essere implementata l'autenticazione? Quale flusso di finanziamento dovrebbe essere usato?