Quindi questa domanda è specifica per implementare l'autenticazione nel nostro sistema, ma sto cercando una soluzione ad alto livello (solo l'architettura) o un consiglio su quale direzione andare verso.
Panoramica (TL; DR)
La nostra azienda sta creando un nuovo prodotto (Prodotto P) e vogliamo unificare l'autenticazione per la sua API con un prodotto recentemente riscritto (Prodotto A) che utilizza un database legacy. Il prodotto A è stato riscritto per utilizzare oAuth 2 per l'autenticazione e al momento questo funziona alla grande ma sto avendo difficoltà a visualizzare come collegare questi due sistemi a causa dei requisiti imposti dal database precedente su cosa una "entità autenticata" può trovarsi nel Prodotto A.
Prodotto A
- Un'entità autenticata è un utente e si autentica utilizzando nome utente / password.
- Un utente appartiene a una azienda .
- Una azienda può autenticarsi utilizzando una chiave api ma internamente la chiave è solo associata a un fittizio utente che appartiene a tale Azienda con un determinato insieme di autorizzazioni.
- L'autenticazione viene effettuata con Concessioni di credenziali del proprietario di risorse , concessione di password (utente / passaggio) o concessione di apikey.
- Le tabelle di utenti e società sono memorizzate in un unico database insieme al resto dei dati del prodotto A (IE non è separato da database, non può essere facilmente modificato dall'app per cambiarlo)
Prodotto B
- Entità autenticata non è ancora stato deciso su
- L'utilizzo non è esclusivo per gli utenti di Prodotto A (IE è un prodotto indipendente), ma
- La società da il prodotto A si baserà in modo significativo sull'API del prodotto per alcune funzionalità di base
- La funzionalità è contestuale in base all'entità che autentica da Prodotto A
Fondamentalmente questi due prodotti sono offerti indipendentemente l'uno dall'altro ai clienti, ma dipenderanno dalle rispettive API per alcune funzionalità di base e la funzionalità è contestuale basata su chi sta autenticando.
Quindi le domande principali con cui ho lottato:
- Come faccio a unificare questi due sistemi in una Entità autenticata ?
- Questa è più una domanda su "come dovrebbe apparire un AE?" piuttosto che "come gestisco le autorizzazioni?" perché so che posso farlo con gli ambiti.
- Dato che ho un solo identificatore ( nome da oauth_client ) che posso determinare da un token di accesso, quali dovrebbero essere le informazioni identificative su Autenticato Entità in modo da poter determinare se si tratta di un utente dal prodotto A, una società dal prodotto A o un AE dal prodotto B?
- C'è un modo per architettare Entità autenticata sul prodotto B che renderà più semplice il bridging del prodotto?