16

Sto scrivendo un server back-end per le applicazioni mobili. Il backend è in esecuzione su google app engine e scritto in Java.Come integrare l'autenticazione Firebase con gli endpoint del motore dell'app google

Desidero che gli utenti siano in grado di accedere con identità federata come Facebook.

Ho visto che google supporta questo tipo di autenticazione per le app mobili tramite l'autenticazione Firebase. Quale sarebbe il modo migliore per integrare l'autenticazione Firebase con i miei endpoint del motore delle app attuali?

Uso già il datastore della piattaforma cloud e non desidero lavorare con il database Firebase, utilizzare solo il metodo di autenticazione.

Grazie.

risposta

6

Sto anche cercando una risposta a questo. Il mio migliore 5c finora è quello di

  • Usa Firebase per impostare Entra metodi ecc dalla console
  • Usa Firebase UI (in versione beta) per il web o "Federati integrazione provider di identità" per iOS/Android impostare il flusso di autenticazione
  • retrive dettagli gettone/autenticazione sul web/iOS/Android client e trasmetterla ai vostri cloud endpoint come ad esempio, HTTP header di richiesta
  • iniettare il javax.servlet.http.HttpServletRequest al punto finale metodi (basta aggiungere un argomento e Google inserisce automaticamente l'oggetto richiesta)
  • Creare un metodo che l'Endpoint chiamerà per ogni richiesta (che richiede l'autenticazione) che gestirà la convalida delle credenziali trasmesse come intestazioni di richiesta HTTP
  • Utilizzare l'SDK Java FireBase per chiamare FireBase per convalidare le credenziali (in ordine per fare questo, è necessario esportare la configurazione jSON dalla console Firebase) e caricare l'SDK con loro, per esempio, in uno dei tuoi servlet:

@Override 
    public void init(ServletConfig config) { 
     try{ 
     InputStream in = config.getServletContext().getResourceAsStream("/WEB-INF/firebase-privatekey.json"); 
     FirebaseOptions options = new FirebaseOptions.Builder() 
       .setServiceAccount(in) 
       .setDatabaseUrl("YOUR_DATABASE_URL") 
       .build(); 
     FirebaseApp.initializeApp(options); 
     log.info("Authentication enabled"); 
     } 
     catch(Throwable t) { 
      t.printStackTrace(); 
      log.warning("AUTHENTICATION DISABLED. Only public resources will be available"); 
     } 
    } 
+0

ho creato una nuova domanda con una domanda simile ... http://stackoverflow.com/questions/39124587/integrate-firebase-auth-with-google-app-engine-cloud-endpoints – SmilingM

0

si dovrebbe essere in grado di utilizzare Google Cloud Endpoints come proxy di autenticazione davanti all'ap p. Endpoint supports validating Firebase Authentication tokens configurando il modello OpenAPI:

# Configure Firebase as an AuthN provider 
securityDefinitions: 
    firebase: 
     authorizationUrl: "" 
     flow: "implicit" 
     type: "oauth2" 
     # Replace YOUR-PROJECT-ID with your project ID in the issuer and audiences fields 
     x-google-issuer: "https://securetoken.google.com/YOUR-PROJECT-ID" 
     x-google-audiences: "YOUR-PROJECT-ID" 
     x-google-jwks_uri: "https://www.googleapis.com/service_accounts/v1/metadata/x509/[email protected]" 

# Add Firebase as an authN provider to specific endpoints... 
security: 
    - firebase: [] 

In alternativa, è possibile utilizzare il Firebase Admin SDK di scrivere l'autenticazione middleware che validates your tokens:

FirebaseAuth.getInstance().verifyIdToken(idToken) 
    .addOnSuccessListener(new OnSuccessListener<FirebaseToken>() { 
     @Override 
     public void onSuccess(FirebaseToken decodedToken) { 
      String uid = decodedToken.getUid(); 
      // ... 
     } 
});