Sto scrivendo un'app Android per le chat vocali e ho deciso di utilizzare Google Sign-In per un'autenticazione utente semplice con il mio server back-end. Tuttavia, non capisco come l'app dovrebbe autenticarsi con il mio back-end. Quando un utente effettua l'accesso utilizzando il suo account Google e ricevo il token ID, posso inviare il token ID al server, quindi il server lo verifica. E poi cos'è? Come autenticare le seguenti richieste, ad esempio quando l'utente invia/riceve un messaggio vocale e l'app deve caricare/scaricare il messaggio sul/dal server? Il server deve sapere quale utente sta effettuando la richiesta, ma il token ID non è appropriato perché scade a breve e la sua verifica dell'integrità è un processo complesso e relativamente lungo.Autenticazione del server back-end di Google Sign-in
risposta
Google API Sign-in: sono coinvolti passaggi seguenti:
- segni utente nella Google utilizzando l'applicazione iOS/Android.
- Google restituisce tokenid (e alcune informazioni aggiuntive. Vedere lo link per ulteriori informazioni) al client (app iOS/Android).
- Il client invia il tokenid al server di back-end. Il server
- utilizza l'API del client di Google (o chiama il punto di fine di google effettuando la richiesta GET ma attenzione che abbia un ritardo di rete associato) per verificare l'integrità del token. In questa fase devono essere soddisfatti determinati criteri. Vedi Here.
- GoogleAPI restituisce alcune informazioni al server. Che tipo di informazioni? Qualcosa di simile a questo:
{u'picture ': u' https://lh3.googleusercontent.com/-RD4yn7rqIc8/AAAAAAAAAAI/AAAAAAAALQI/9Ab_kR3_CII/s96-c/photo.jpg ' u'sub ': u'10270538098780639-55', u'family_name ': u'Dusad', u' iss ': u' https://accounts.google.com 'u'email_verified ': vero, u'name': u'Utsav Dusad', u'at_hash ': u'BMjN0mWeOMqVVBhjW_W9A', u'given_name ': u'Utsav', u 'exp': 1484582338, u'azp ': u'85959433390-npk1ss7juimjqt5hrlhm7v2fj2u7593f.apps.googleusercontent.com', u'iat ': 1484578738, u'locale': u'en-GB ', u'email': u'[email protected] ', u'aud': u'85959433390-npk1ss7juimjqt5hrlhm7v2fj2u7593f.apps.googleusercontent.com '}
sub: Soggetto. ID utente. Non utilizzare l'ID e-mail come chiave primaria in quanto potrebbe cambiare. usa userID.
Un identificatore per l'utente, unico tra tutti gli account Google e mai riutilizzato. Un account Google può avere più email in diversi punti in tempo, ma il valore secondario non viene mai modificato. Utilizzare sub all'interno dell'applicazione come chiave identificatore univoco per l'utente.
Per informazioni dettagliate consultare here:
- Server restituisce login successo al client.
- client effettua successive richieste HTTP POST, GET con tokenID.
- Il server serve i dati verificando l'idtoken e controllando le informazioni "sub" (sub è l'identità univoca di un utente).
Sembra che la spiegazione che vi serve è a: https://developers.google.com/identity/sign-in/web/backend-auth#verify-the-integrity-of-the-id-token
E spiega:
Dopo aver ricevuto il token ID da HTTPS POST, è necessario verificare la integrità del token. Per verificare che il token è valido, in modo che i seguenti criteri sono soddisfatti:
Il token ID è un JWT che è correttamente firmato con un appropriato Google chiave pubblica (disponibile in formato JWK o PEM). Il valore di aud nel token ID è uguale a uno degli ID client della tua app. Questo controllo è necessario per impedire che i token ID rilasciati a un'app dannosa vengano utilizzati per accedere ai dati relativi allo stesso utente sul server di back-end della tua app. Il valore di iss nel token ID è uguale a accounts.google.com o https://accounts.google.com. Il tempo di scadenza (exp) del token ID non ha superato . Se la tua richiesta di autenticazione ha specificato un dominio ospitato, il token ID ha un reclamo hd corrispondente al dominio ospitato da Google Apps.
Essa afferma:
Invece di scrivere il proprio codice per eseguire questa procedura di verifica, si consiglia vivamente di utilizzare una libreria client API di Google per la propria piattaforma , o chiamando il nostro endpoint convalida tokeninfo.
Continua a mostrare esattamente ciò che è necessario fare.
No, assolutamente non risponde alla mia domanda. Quindi dovrei inviare il token ID ad ogni richiesta? Perché è ridicolo. :) – Salivan
Hai appena mostrato come verificare il token e ho chiesto come autorizzare le seguenti richieste dopo quella che ha verificato il token. – Salivan
Ok, penso che quello che stai cercando sia monitorare la sessione dell'utente (argomento correlato: https://developers.google.com/identity/sign-in/web/session-state) Una volta che l'utente è autenticato, la sessione può essere "fidato". – raddevus
- 1. Primavera OAuth: Server Resource con autorizzazione del server backend
- 2. AppEngine Java Google+ Signin mancante gplus_id
- 3. autenticazione di Google con un server back-end richiesto Scopes
- 4. Pulsante di accesso di Google+ [class = 'g-signin']
- 5. Accesso a Google+ per autenticazione app lato server non funzionante
- 6. avvia Google Signin senza GIDSignInButton ma a livello di programmazione
- 7. Utilizzo di JWT con autenticazione Active Directory nel backend NodeJS
- 8. Problema con il backend di autenticazione personalizzato per Django
- 9. Autenticazione del protocollo di misura di Google Analytics?
- 10. Autenticazione Google con nodejs
- 11. Utilizzo di Google Analytics dal backend
- 12. Google+ SDK per iOS pulsante Aggiungi Signin programmazione
- 13. Autenticazione (Passport) sufficiente per la sicurezza con il server di backend Node js?
- 14. Autenticazione dell'API dati Google
- 15. Server di backend per MMORPG Unity3D
- 16. Come risolvere Google Maps "Autenticazione fallita sul server"?
- 17. Provider di server di backend per app mobili
- 18. Autenticazione Google javascript
- 19. Google Reader Problema di autenticazione
- 20. Android: autenticazione Google
- 21. Autenticazione API Google Drive
- 22. Come connettere un backend PHP all'API di Google Analytics
- 23. Autenticazione Google Cloud Storage
- 24. Xcode 7 avvisi con Google Signin lib durante la creazione del progetto
- 25. Autenticazione del client su Cloud Endpoint senza accesso all'account Google
- 26. Google App Engine e backend: come configurarlo sul server di sviluppo?
- 27. Django, angolare e DRF: autenticazione su backend Django vs API
- 28. API Google Realtime senza autenticazione Google
- 29. autenticazione google/apis/drive_v2 sulla nuova autenticazione di google Drive. Spero anche di evitare la frustrazione con google-api-client
- 30. Scelta del backend per Android e IOS?
hey Salivan, hai mai trovato una soluzione o un approccio per questa situazione? – rastadrian
Penso che la risposta di Utsav Dusad sia la più appropriata. – Salivan
Quindi ogni richiesta conseguente con forse un'intestazione di autorizzazione contenente il valore idToken? Se è così, e dato che idToken è una JWT, forse come Autorizzazione: Bearer {idToken}? – rastadrian