Lavoro per una società web in fase di grande riscrittura per separare i dati nella propria applicazione di servizio RESTful: l'obiettivo è poter vendere l'accesso a terze parti e prototipare rapidamente le applicazioni interne senza dover accedere direttamente a il DB.
Al momento abbiamo tre applicazioni: la già citata API dati, un CMS e un front-end. Gli utenti devono essere in grado di accedere al CMS per modificare i dati tramite l'API e ci piacerebbe davvero integrare le nostre app Web di Google in questo, effettuando l'accesso tramite Google. Idealmente, questo userebbe il flusso OAuth, perché è il più trasparente per i nostri utenti - ma non conosco alcun modo per condividere le informazioni OAuth tra le applicazioni senza compromettere la loro sicurezza.
Quello che ho provato
In concreto? Niente. La mia proposta iniziale era quella di generare essenzialmente "Nested OAuth" - impostare la mia applicazione dati come provider OAuth per tutte le altre applicazioni, quindi utilizzare il flusso Google OAuth come standard di autenticazione non specificato all'interno del livello dati - è un'API interamente riposante, quindi sarebbe praticamente trasparente per l'utente, ma sembra violare il concetto di OAuth e sento che dovrebbe esserci un modo migliore per farlo. Il flusso sarebbe simile a questo:
- Richiesta di accesso utente per il CMS
- CMS ottiene un token di autenticazione dal livello dati
- CMS reindirizza l'utente alla pagina di accesso ospitata sul livello dati
- Livello dati Ottieni un token di autenticazione da Google
- Il livello dati reindirizza l'utente alla pagina di accesso di Google
- Google autentica l'utente, quindi reindirizza l'utente al livello dati con un token di autenticazione
- Il livello dati utilizza il token di autenticazione per ottenere il token di accesso per i servizi di Google
- Il livello dati reindirizza l'utente al CMS con un altro token di autenticazione
- Auth Layer utilizza il token di autenticazione per ottenere un token di accesso per i servizi di dati
Ma sembra, beh, goffo. Mi piacerebbe anche non dover forzare l'utente attraverso le pagine "Consenti" mutiple, una da Google per consentire il Data Layer e una da The Data Layer per consentire l'accesso al CMS (o qualche applicazione successiva). Quello di cui ho davvero bisogno è di usare Google per una situazione SSO o Kerberos e chiedere a Google di fornire i biglietti per le mie applicazioni. Se qualcuno conosce un modo per sfruttarlo con Google, sarei lieto di distruggere l'intero progetto.