Abbiamo un'applicazione web a pagina singola e abbiamo un nuovo sito SSO (anch'esso nostro) che utilizza OAuth2 e stiamo cercando di collegarli.
Nelle distribuzioni di produzione / staging / CI, è facile agganciare tutto. Ad esempio:
- in fase di produzione avremo
https://app.company.com
per accedere al nostro punto di backend dei prodotti ahttps://sso.company.com
per auth e viceversa - su CI avremo
https://app.ci.company.com
per accedere al nostro back-end di sviluppo e puntare ahttps://sso.ci.company.com
per auth.
Quando eseguiamo lo sviluppo sull'app, accediamo localmente a qualcosa come http://localhost:8000/
e punta al backend dello sviluppo condiviso. In passato, abbiamo avuto solo un'autenticazione contro il backend di sviluppo (ottenendo le credenziali dell'utente finale e inviandolo), ma ci piacerebbe farlo cablare per usare SSO per l'autenticazione.
La domanda sorge da come possiamo farlo senza che nessuno sviluppatore voglia sviluppare localmente la necessità di configurare e personalizzare il proprio servizio SSO. Nello specifico, possiamo usare l'SSO dev / CI condiviso e puntare alle nostre distribuzioni locali?
Ciò che abbiamo considerato:
- Utilizza un file proxy / file hosts e aggiungi
http(s)://sso.ci.company.com
ahttp(s)://localhost:8000
. Questo ci impone di impostare localmente HTTPS o di avere l'SSO diretto su un URL non HTTPS. Inoltre, l'installazione è un po 'difficile. - Fai reindirizzare la nostra app locale all'SSO con un argomento che si identifica e utilizza l'SSO per sapere dove reindirizzare. Ad esempio, reindirizza a
https://sso.ci.company.com/?appUrl=localhost:8000
. Questo ci obbliga a dare un reindirizzamento a tempo indeterminato nell'SSO che dovremmo disattivare per la produzione ed è un po '"strano" ma funziona e può essere inserito nella scatola nera. - Basta eseguire l'SSO localmente su ogni dev box. Questa è fondamentalmente la non-soluzione in quanto richiederebbe un sacco di setup per arrivare a uno script "one box che può eseguire tutto", e nega uno dei nostri preziosi vantaggi al momento in cui sostanzialmente tutto quello che devi fare è controllare estrai il codice su qualsiasi sistema e fallo funzionare. Ho visto questo fatto prima però comunemente (spesso in cima alle macchine virtuali di sviluppo); Mi piacerebbe solo esplorare le opzioni a cui siamo potenzialmente più vicini.
C'è una soluzione a questo tipo di problemi o aspetti delle nostre idee che non abbiamo ancora considerato?